Firm pdca setup
Skills + workspace for AI agents in B2B service firms
npx -y skills add b2bforce/b2bforce --skill firm-pdca-setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
8.6 KB, as published. Nobody here has run it
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
workspace/firm/profile.md— what the firm sells and to whom.workspace/firm/services/{slug}.md— the service this area serves.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
- One area = one outcome = one folder. Do not create an area that measures "marketing" in general.
- Every metric must name a source of truth. If the user cannot say where the
number comes from, set the metric
source: waitingand do not invent a baseline. - 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.
- Outputs are not outcomes. Every area needs at least one outcome metric;
output metrics are marked
role: outputand can never be the reason a cycle is called a success. - Never invent a baseline, a target, or a benchmark. An empty baseline with
quality: waitingis 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:
| Cadence | What it measures | Default |
|---|---|---|
fast_cadence | Outputs and leading indicators | weekly or biweekly |
outcome_cadence | The business outcome | quarterly |
Rules:
- Only
outcome_cadencechecks may justifyscaleorstopdecisions. - 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.
| Pack | Measures | Needs |
|---|---|---|
content | Publishing throughput, draft quality gate pass rate, buyer-question coverage | Nothing beyond this repo — the only pack that works on a fresh clone |
pipeline | Fit calls, proposals sent, win rate, pipeline value | A sales pipeline the firm records somewhere |
visibility | Answer-engine citation rate, share of answer, placements earned | An AI-visibility monitoring habit |
retention | Net revenue retention, logo churn, expansion share, referenceable clients | A client record and renewal dates |
delivery | On-time delivery, out-of-scope hours, written success definitions | Engagement 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_betterrole: outcome | leading | outputsource:a named system, report, or file path — orwaiting
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:
## Outcome— one sentence, business language, no metric names.## Metrics— the table below.## Baseline— value, date range, source, quality per metric.## Autonomy boundaries— what the agent may do, and what needs approval.## Open data requests— everywaitingsource 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
- Create one area with the
contentpack and at least onewaitingmetric. - Confirm
README.md,scoreboard.md,evals.md, anderrors.mdexist and thatscoreboard.mdhas a header and no data rows. - Confirm the
waitingmetric appears under## Open data requests. - Run
firm-pdca-cycleand confirm it finds the area.
Reference Files
| File | Content |
|---|---|
references/metric-packs.md | Metric definitions, directions, and workspace bindings per pack |
Related Skills
| Skill | When |
|---|---|
firm-context | Before setup — firm profile and services must exist |
firm-pdca-cycle | Runs the Plan → Do → Check → Act cycle in this area |
firm-pdca-eval | Independent evaluation before a cycle's Check |