Agent skill
firm-pdca-eval
Independently evaluate a PDCA cycle against the acceptance criteria written before the work started, using deterministic checks first and an LLM judge second.
From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21
What it does when it runs
Independently evaluate a PDCA cycle against the acceptance criteria written before the work started, using deterministic checks first and an LLM judge second. Use before a cycle's Check, when verifying whether work actually met its criteria, or when a result needs a second opinion that is not the executor's.
Read from the skill and the 0 files 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-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗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-eval" mkdir -p ~/.claude/skills/firm-pdca-eval cp -R "/tmp/b2bforce/.agents/skills/firm-pdca-eval/." ~/.claude/skills/firm-pdca-eval/
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.
The skill
Source on GitHub ↗Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/firm-pdca-eval/SKILL.md, which is licensed MIT (skill frontmatter). 904 words, 15 headings.
PDCA Eval
Scores one cycle against the acceptance criteria that were written before Do.
Produces a verdict per criterion with evidence, and nothing else.
This is a separate step for a reason. When the same reasoning that produced the work also judges it, the judgement adds no independent signal — it shares the executor's blind spots and tends to confirm the work rather than test it. An evaluation is only worth running if it applies a check the executing step did not.
Read First
- The cycle file:
workspace/pdca/{area}/cycles/{cycle-id}--{slug}.md. workspace/pdca/{area}/evals.md— regression tests and reusable checks.workspace/pdca/{area}/README.md— metric directions and roles.
Read the acceptance criteria before reading the Do Log, so the criteria frame the evidence rather than the evidence reframing the criteria.
When to Use
- Before
Checkinfirm-pdca-cycle. Required, not optional. - The user wants to know whether work actually met its criteria.
- A result looks good and nobody has tested it against what was promised.
- A previously fixed failure needs a regression check.
What You Receive
- the goal and baseline,
- the acceptance criteria as written before
Do, - the raw evidence and the state of the target system,
- the tool trace, if available,
- the regression tests from
evals.md.
You do not receive, and must not accept as evidence, the executing step's own narrative that the work went well.
Grader Order
Always in this order. Stop escalating once a criterion is decided.
1. Deterministic checks
Scripts, exit codes, file existence, frontmatter values, counts, string matches. These live outside the generating process, so they are the strongest evidence available.
Available in this repo:
| Check | Use |
|---|---|
scripts/validate-content-draft.sh | Draft structure and length |
scripts/validate-content-ideas.sh | Idea backlog integrity |
scripts/validate-content-readiness.sh | Firm, service, ICP, persona gates |
scripts/validate-pdca-cycle.sh | Cycle file structure |
./validate-skills.sh | Skill definitions |
Plus anything the criterion names: file present, count ≥ N, frontmatter field set, command exits 0.
2. Independent LLM judge
Only for criteria a script cannot decide — tone, positioning fit, whether a draft genuinely answers a buyer question.
Rules:
- Run in a fresh session or a separate context when the platform allows it.
- Judge against the criterion and the firm profile, not against the executor's explanation.
- Cite the specific passage that decided the verdict.
- Return
uncertainrather than guessing.uncertainis a useful signal; a confident wrongpassis not.
3. Human
Escalate to the owner when:
- a grader returned
uncertainon a mandatory criterion, - deterministic and LLM graders disagree,
- the criterion covers a high-risk, irreversible, public, financial, or reputational action.
Verdicts
Every criterion gets pass, fail, or uncertain, each with evidence.
Closing rules:
- A cycle may close as failed. Failure is a legitimate, useful outcome.
- A cycle may not close as successful, and its actions may not be scaled or
standardized, while any mandatory criterion is
failoruncertain. - Absence of evidence is
uncertain, neverpass. - Do not soften a
failbecause the effort was substantial or the intent good.
Output
Write the verdict table into the cycle's ## Eval Results:
| # | Criterion | Grader | Verdict | Evidence |
|---|-----------|--------|---------|----------|
| 1 | Drafts pass validator first run | deterministic | pass | 3/3 exit 0 |
| 2 | Answers an uncovered buyer question | deterministic | pass | Ideas 14, 19, 22 |
| 3 | Tone matches firm profile | llm | uncertain | Drafts B and C read more promotional than profile allows |
Mandatory: 2 pass, 0 fail, 0 uncertain.
Overall: pass with a non-mandatory concern.
Escalated to owner: no.
Do not write anything else into the cycle file. Check and Act belong to
firm-pdca-cycle.
Turning Failures Into Tests
Every confirmed, repeated failure becomes a regression test.
- Add the symptom, cause, fix, prevention, and automated check to
workspace/pdca/{area}/errors.md. - Add the corresponding check to
workspace/pdca/{area}/evals.mdso future cycles are graded against it automatically.
An errors.md entry with no matching check in evals.md is incomplete — nothing
stops the failure from recurring.
errors.md entry:
## Draft published without a linked idea
- Symptom: draft frontmatter `idea:` empty, validator failed on close
- Cause: draft written directly, skipping the idea backlog
- Fix: created the idea retroactively, relinked the draft
- Prevention: check `idea:` before publishing
- Automated check: `scripts/validate-content-draft.sh`
- Regression test: evals.md #4
- Verified: 2026-07-31
Rules
- Evaluate against criteria written before
Do. If criteria were written after, record that as a process failure and grade what exists. - Deterministic before LLM, always.
- Cite evidence for every verdict. A verdict without evidence is an opinion.
- Never edit the criteria to fit the result.
- Never write Check or Act. Those are decisions; this skill only produces findings.
Testing Requirements
- Evaluate a cycle where one mandatory criterion clearly fails; confirm the verdict blocks a successful close.
- Evaluate a cycle with a missing piece of evidence; confirm
uncertain, notpass. - Add one failure to
errors.mdand confirm a matching check lands inevals.md.
Related Skills
| Skill | When |
|---|---|
firm-pdca-cycle | Owns the cycle; calls this skill before Check |
firm-pdca-setup | Defines the metrics and seeds evals.md |
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.
- content-eval by ericosiu · 3,449
Need help setting it up?
This page tells you what firm-pdca-eval 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.