Systems Lab

Agent skill

firm-pdca-setup

Set up a files-only PDCA measurement area for one process or outcome in a professional service firm — outcome, metrics, direction, source of truth, cadence, and baseline.

activeSelf-containedInstructions only1,343 words

Filed under Outbound email.

From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21

What it does when it runs

Set up a files-only PDCA measurement area for one process or outcome in a professional service firm — outcome, metrics, direction, source of truth, cadence, and baseline. Use when the user wants to measure whether marketing, sales, delivery, or content work actually moves a business outcome, or asks for KPIs, a scoreboard, or a measurement loop. Read firm profile first.

Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about firm-pdca-setup

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce
git -C /tmp/b2bforce sparse-checkout set ".agents/skills/firm-pdca-setup"
mkdir -p ~/.claude/skills/firm-pdca-setup
cp -R "/tmp/b2bforce/.agents/skills/firm-pdca-setup/." ~/.claude/skills/firm-pdca-setup/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/firm-pdca-setup/SKILL.md, which is licensed MIT (skill frontmatter). 1,343 words, 18 headings.

PDCA Setup

Creates one measurement area under workspace/pdca/{area}/. An area owns exactly one business outcome and the metrics that evidence it.

Everything is committed Markdown. There is no hidden runtime state, no database, and no subscription. The scoreboard is a table in the repo.

Read First

  1. workspace/firm/profile.md — what the firm sells and to whom.
  2. workspace/firm/services/{slug}.md — the service this area serves.
  3. workspace/pdca/README.md — existing areas, so you do not create a duplicate.

When to Use

  • User wants to know whether content, prospecting, or delivery work is producing results.
  • User asks for KPIs, a scoreboard, targets, or "how do we measure this".
  • A skill produced artifacts for weeks and nobody has checked the outcome.
  • Before firm-pdca-cycle — an area must exist first.

Core Rules

Brand and owner. In a multi-brand workspace the area README declares brand: {slug} or brand: all — one outcome measured with a brand dimension, never one cloned area per brand; scoreboard rows label the brand and market metrics are never summed across brands (Brand Scope Gate in AGENTS.md). Once workspace/firm/people/ has entries, the area's owner: must be a person slug from that registry (scripts/validate-brands.sh checks it).

  1. One area = one outcome = one folder. Do not create an area that measures "marketing" in general.
  2. Every metric must name a source of truth. If the user cannot say where the number comes from, set the metric source: waiting and do not invent a baseline.
  3. Start with exactly one area. Refuse to create a second area in the same session. A firm that cannot sustain one cadence will not sustain three.
  4. Outputs are not outcomes. Every area needs at least one outcome metric; output metrics are marked role: output and can never be the reason a cycle is called a success.
  5. Never invent a baseline, a target, or a benchmark. An empty baseline with quality: waiting is a valid, honest state.

Cadence — Two Speeds, Not One

Professional service firms have long sales cycles. Marketing and business development work influences pipeline months later, so a weekly outcome number is noise and a weekly target invites the firm to optimize the wrong thing.

Set two cadences per area:

CadenceWhat it measuresDefault
fast_cadenceOutputs and leading indicatorsweekly or biweekly
outcome_cadenceThe business outcomequarterly

Rules:

  • Only outcome_cadence checks may justify scale or stop decisions.
  • A fast check may never be reported as outcome movement.
  • If the user insists on a weekly outcome number, record the source of truth and the expected lag in the area README so the lag is visible later.

Metric Packs

Do not invent a metric set from scratch. Pick a pack, then cut it to the metrics whose source of truth actually exists.

Full definitions, directions, and workspace bindings: references/metric-packs.md.

PackMeasuresNeeds
contentPublishing throughput, draft quality gate pass rate, buyer-question coverageNothing beyond this repo — the only pack that works on a fresh clone
pipelineFit calls, proposals sent, win rate, pipeline valueA sales pipeline the firm records somewhere
visibilityAnswer-engine citation rate, share of answer, placements earnedAn AI-visibility monitoring habit
retentionNet revenue retention, logo churn, expansion share, referenceable clientsA client record and renewal dates
deliveryOn-time delivery, out-of-scope hours, written success definitionsEngagement records

Start with content unless the user already has a source of truth for another pack. It is measurable from committed files today, which means the first cycle can close with real numbers instead of N/D.

Workflow

1. Define the area

Ask for, and do not guess:

  • the one business outcome this area should move,
  • which service and ICP it serves,
  • who owns it,
  • what the agent may do without asking (see Autonomy Boundaries).

Slug the area in kebab-case: content-to-pipeline, retainer-retention.

2. Choose metrics

Pick 3–6 metrics. For each, record name, unit, direction, role, and source.

  • direction: higher_is_better | lower_is_better
  • role: outcome | leading | output
  • source: a named system, report, or file path — or waiting

Refuse to proceed past six metrics. A scoreboard nobody fills is worse than no scoreboard, because it implies measurement that is not happening.

3. Record the baseline

For each metric, write the current value with its date range, source, and quality: high, medium, low, or waiting.

If a source of truth is missing, write waiting and add a concrete request to the area README stating who must provide what. Do not estimate.

4. Write the area files

workspace/pdca/{area}/
├── README.md        # outcome, metrics, sources, cadence, owner, autonomy, baseline
├── cycles/          # created by firm-pdca-cycle
├── scoreboard.md    # header only; rows are appended as cycles close
├── evals.md         # acceptance-criteria patterns and regression tests
└── errors.md        # repeated failures and the guard added for each

README.md frontmatter:

---
area: content-to-pipeline
outcome: More qualified implementation interest from published content
owner: founder
service: seo-retainer
icp: mid-market-saas
fast_cadence: weekly
outcome_cadence: quarterly
timezone: Europe/Warsaw
metric_pack: content
created: 2026-07-25
updated: 2026-07-25
---

Body sections, in this order:

  1. ## Outcome — one sentence, business language, no metric names.
  2. ## Metrics — the table below.
  3. ## Baseline — value, date range, source, quality per metric.
  4. ## Autonomy boundaries — what the agent may do, and what needs approval.
  5. ## Open data requests — every waiting source with an owner and a date.

Metrics table:

| Metric | Unit | Direction | Role | Source | Quality |
|--------|------|-----------|------|--------|---------|
| Qualified implementation interest | count | higher_is_better | outcome | Deal notes | medium |
| Drafts passing validator first try | % | higher_is_better | leading | validate-content-draft.sh | high |
| Posts published vs planned | count | higher_is_better | output | Content queue | high |

scoreboard.md is created with the header row only. Do not pre-generate a column or row per future week — that is placeholder content, and the repo's Minimal Files Rule forbids it. Rows are appended by firm-pdca-cycle when a cycle closes.

# Scoreboard — {area}

Appended when a cycle closes. Never edit a past row.

| Check date | Cadence | Metric | Plan | Actual | Status | Cycle |
|------------|---------|--------|-----:|-------:|--------|-------|

5. Seed evals

evals.md starts with the acceptance-criteria patterns this area will reuse and the deterministic checks available. At minimum, record that scripts/validate-pdca-cycle.sh is the structural gate.

6. Hand off

Tell the user the area is ready and that the next step is firm-pdca-cycle. Do not open the first cycle in the same run — setup and planning are different decisions, and bundling them tends to produce a plan the user never agreed to.

Autonomy Boundaries

Record these explicitly per area, because they differ by firm. Default split:

Allowed without asking: read data sources, create and update files under workspace/pdca/{area}/, draft experiments, propose next-cycle plans.

Requires approval: publishing anything public, contacting a client or prospect, spending money, changing tracking or permissions, anything irreversible or reputational.

Testing Requirements

  1. Create one area with the content pack and at least one waiting metric.
  2. Confirm README.md, scoreboard.md, evals.md, and errors.md exist and that scoreboard.md has a header and no data rows.
  3. Confirm the waiting metric appears under ## Open data requests.
  4. Run firm-pdca-cycle and confirm it finds the area.

Reference Files

FileContent
references/metric-packs.mdMetric definitions, directions, and workspace bindings per pack

Related Skills

SkillWhen
firm-contextBefore setup — firm profile and services must exist
firm-pdca-cycleRuns the Plan → Do → Check → Act cycle in this area
firm-pdca-evalIndependent evaluation before a cycle's Check

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what firm-pdca-setup does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.