Firm pdca cycle
Skills + workspace for AI agents in B2B service firms
npx -y skills add b2bforce/b2bforce --skill firm-pdca-cycleAssembled 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
Run one Plan-Do-Check-Act cycle for a PDCA area in workspace/pdca/, ending in a measured result and an explicit decision. Use when the user wants to plan a measurable experiment, record what was done, check the outcome against a baseline, close a cycle, or asks whether previous work actually worked. Requires an area created by firm-pdca-setup.
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
9.4 KB, as published. Nobody here has run it
PDCA Cycle
One cycle = one hypothesis, 1–3 actions, a measured result, an independent evaluation, and a decision. The cycle file is the deliverable.
The repo's other skills generate artifacts. This one closes the loop on them. Published posts, sent sequences, and shipped pages are not success. Movement on the area's outcome metric is.
Read First
workspace/pdca/{area}/README.md— outcome, metrics, sources, cadence, autonomy boundaries.- The previous cycle in
workspace/pdca/{area}/cycles/. workspace/pdca/{area}/errors.mdandevals.md— known failures and the acceptance-criteria patterns to reuse.workspace/pdca/{area}/scoreboard.md— what was already recorded.
If the area does not exist, stop and run firm-pdca-setup first.
When to Use
- Starting a measurable experiment in an existing area.
- Recording what was actually done and what the evidence shows.
- Closing a cycle with a decision.
- The user asks whether the last batch of work moved anything.
Overdue Detection — Run This First
This repo has no scheduler, so the cycle skill is its own watchdog. On every invocation, before anything else, report:
- Any open cycle whose
check_duedate has passed. - Any cycle with a filled
Do Logand an emptyEval Results. - Any cycle closed without a decision in the allowed vocabulary.
- Any metric still
waitingsince setup, with the age of the request. - Whether the area's
outcome_cadencecheck is overdue.
State these plainly before proposing new work. An area with three open cycles and no closed ones does not need a fourth plan.
Core Rules
- One hypothesis per cycle, stated as: "If we do X, metric Y should change by Z, because …".
- Maximum three actions. More than three and the Check cannot attribute anything.
- Acceptance criteria are written before Do, not after. This is the rule the whole skill exists to enforce; a criterion invented after seeing the result is a rationalization.
- Never invent a number. Missing data is
waitingand the status icon is🔴 N/D, not an estimate and not silence. - Missing data is not success. A cycle may close as failed; it may not close as successful with an unmet mandatory criterion.
- Outputs delivered ≠ outcome moved. Report them in separate rows and never let
an output metric justify
scale. - Do not present correlation as cause. If the outcome moved and something else changed at the same time, say so.
- Never edit a closed cycle or a past scoreboard row. Correct the record forward in a new cycle.
Cycle File
Path: workspace/pdca/{area}/cycles/{YYYY}-{Www}--{slug}.md
Example: workspace/pdca/content-to-pipeline/cycles/2026-W31--buyer-question-coverage.md
Frontmatter:
---
area: content-to-pipeline
cycle_id: 2026-W31
cadence: fast # fast | outcome
status: planning # planning | doing | evaluating | closed | blocked | waiting_for_data
baseline_quality: high # high | medium | low | waiting
opened: 2026-07-27
check_due: 2026-07-31
closed:
decision: # set on close, from the Act vocabulary
---
Required sections, in this order. Keep every heading even when a section is short — the validator checks for them and a missing section usually means a skipped step:
## Goal
## Baseline
## Hypothesis
## Acceptance Criteria
## Plan
## Do Log
## Eval Results
## Check
## Act
## Blockers
## Next Cycle Inputs
Full field-by-field rules: references/cycle-file.md.
Workflow
1. Plan
- Read everything in Read First and run Overdue Detection.
- Record the baseline for the metrics this cycle targets: value, date range,
source, quality. If a source is missing, set
status: waiting_for_data, write the concrete request, and stop. Do not plan against an imagined baseline. - Write one hypothesis with a numeric expected change.
- Choose 1–3 actions. For each: expected output, expected outcome, measurement date, dependency, risk, and whether it needs approval.
- Write acceptance criteria — measurable, and each with the check that will
decide it. Reuse patterns from
evals.md. - Set
check_duefrom the area's cadence. Usefastfor output and leading metrics; only anoutcomecycle may target an outcome metric.
Set status: doing when the plan is agreed.
2. Do
Log every action in Do Log with date, what was done, result, and evidence — a
file path, URL, ID, or command output. An action with no evidence is not done.
After each action, verify in the target system that the intended effect happened. Do not assume success from the absence of an error.
Actions listed as requiring approval are prepared and left for the owner. Do not execute them.
Stop and set status: blocked when:
- three different, diagnosis-driven repair attempts have failed,
- the next step needs data, access, tooling, or approval you do not have,
- the result of an external action is unknown and cannot be checked safely,
- the action would be irreversible, public, financial, or reputational.
When blocked, write what was attempted, the evidence, and the specific decision the owner has to make. Do not attempt a fourth repair.
3. Evaluate
Set status: evaluating and run firm-pdca-eval. Paste its verdict into
Eval Results.
Do not skip this and do not self-assess. Evaluating your own work with the same reasoning that produced it adds no independent signal — the point of the separate pass is that it applies checks the executing step did not.
4. Check
After the measurement date:
- Compare baseline to result, and plan to execution.
- Include the eval verdict.
- Assess data completeness and quality.
- Separate outcome movement from leading and output indicators.
- Record deviations, errors, blockers, and side effects.
If data is incomplete, mark the Check conditional, use 🔴 N/D, and do not scale
anything on the strength of leading indicators alone.
5. Act
Close with one decision, stated with its reason:
| Decision | Meaning |
|---|---|
maintain | Keep doing this at the same level |
standardize | Make it the default way this work is done |
scale | Increase investment — outcome cycles only |
change | Same goal, different approach |
stop | Stop doing this |
observe_longer | Signal is real but too early to decide |
ask_owner | Needs a human decision, stated explicitly |
scale and stop require an outcome cadence Check. A fast cycle can reach
maintain, change, standardize, observe_longer, or ask_owner.
Then:
- Append scoreboard rows (below).
- Write
Next Cycle Inputs. - Add any repeated failure to
errors.mdand a matching check toevals.md. - Set
status: closed,closed, anddecision. - Run
scripts/validate-pdca-cycle.sh {cycle-path}. Treat a non-zero exit as a hard stop.
If several consecutive cycles all close maintain or scale and none ever
closes stop or change, say so. A loop that never produces a negative decision
is not measuring anything.
Scoreboard
Append one row per metric checked. Never rewrite a past row.
| Check date | Cadence | Metric | Plan | Actual | Status | Cycle |
|------------|---------|--------|-----:|-------:|--------|-------|
| 2026-07-31 | fast | Drafts passing validator first try | 80% | 🟢 86% | on_track | [2026-W31](cycles/2026-W31--buyer-question-coverage.md) |
| 2026-07-31 | fast | Buyer questions covered | 6 | 🟠 5 | behind | [2026-W31](cycles/2026-W31--buyer-question-coverage.md) |
Status icons, for higher_is_better:
🟢result ≥ 100% of plan🟠result ≥ 80% and < 100% of plan🔴result < 80% of plan
For lower_is_better:
🟢result ≤ plan🟠result > plan and ≤ 125% of plan🔴result > 125% of plan
For a zero, binary, or non-linear target, define the rule in evals.md before
the cycle starts. Missing data past its due date is 🔴 N/D.
Rows are appended, not columns. A wide table with one column per future week is placeholder content and grows unreadable; an appended long table stays diffable and keeps history intact.
Testing Requirements
- Open a
fastcycle in an existing area and confirm acceptance criteria are written before anyDo Logentry. - Log one action with evidence.
- Run
firm-pdca-evaland paste the verdict. - Close with a decision and confirm two scoreboard rows were appended.
- Run
scripts/validate-pdca-cycle.shon the file and confirm it exits 0. - Re-run this skill and confirm Overdue Detection reports the closed cycle correctly and does not flag it as open.
Reference Files
| File | Content |
|---|---|
references/cycle-file.md | Section-by-section cycle file rules and a worked example |
Related Skills
| Skill | When |
|---|---|
firm-pdca-setup | Creates the area this cycle runs in |
firm-pdca-eval | Independent evaluation, required before Check |
firm-context | Firm profile and services |
intel-weekly-report | Competitor digest — reports changes, does not measure outcomes |