agentify-project
Make a project ready for AI agentic engineering by converging it toward a canonical…
Harden a REQUIREMENTS or PLAN document before the next phase picks it up — checked against its ticket, the code and related tickets, proven mistakes fixed in place.
$ npx -y skills add eai-org/agent-toolkit --skill harden-artifact --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/harden-artifactContext preview
The summary Claude sees to decide when to auto-load this skill.
Harden a REQUIREMENTS or PLAN document before the next phase picks it up — checked against its ticket, the code and related tickets, proven mistakes fixed in place.
name: harden-artifact description: Harden a REQUIREMENTS or PLAN document before the next phase picks it up — checked against its ticket, the code and related tickets, proven mistakes fixed in place. disable-model-invocation: true type: flow license: MIT metadata: version: "0.1"
Make a `.REQUIREMENTS.md` or `.PLAN.md` — the **artifact** — safe to hand to the next phase: every deviation from its ticket deliberate, explained and correct; every claim true; nothing blocking the session that picks it up. A fresh-context reviewer hunts, the session challenges each finding, and only what survives changes the artifact — which **must never end worse than it started**.
A session that wrote the artifact cannot judge findings on it: say so and propose a fresh session before continuing.
artifact or one of the same base — with a ticked task is already being built, past where hardening belongs → say so and ask before going on.
suffix replaced by `.TICKET` (`FOO.PLAN.md` → `FOO.TICKET.md`), or, when the stem names another source, that file (`FOO.PR-REVIEW.REQUIREMENTS.md` → `FOO.PR-REVIEW.md`). A source with decisions recorded beside it (a PR review's `.ANSWERS.md`) is read with them: only what they accept is the ticket — the rest is out of scope, never a deviation, never recorded in the artifact. Ambiguous → ask; no file → ask whether the ticket lives elsewhere (a tracker id, pasted text) before treating it as none. None (e.g. requirements brainstormed from an idea) → say so: a plan is compared with its upstream instead; with neither, the review runs without the Deviations lens.
exists.
later ones that build on this work included.
governing docs: where it is built, the other side of each integration it relies on, and whatever will consume what it delivers (a backend ticket's frontend, a library's apps, an API's other clients, the readers of a changed table). Any that can't be located → one batched ask for their paths, autoaccept or not; the user may skip one.
Done when the artifact, the ticket or its absence, and each repo's path or skip are settled.
Load and follow [fresh-eyes-review](../fresh-eyes-review/SKILL.md) — inputs all explicit, so it runs without its confirmation step — with the whole artifact as the changeset, one sentence of intent (the ticket's title — without a ticket, the artifact's own summary — and the phase the artifact feeds), the sources above (skipped repos named as unavailable), and this mandate in place of its default:
upstream) in what must be true when the work is done — dropped, added, changed; rewording and merged duplicates are not differences, nor is a plan's "how". Each needs a written reason, anywhere in the artifact or its upstream: none → a finding. A reason is itself a claim.
is written. Probe each source class:
the spot the artifact names;
needs, the way the consumer's code already uses analogous things (names, shapes, errors, paging)?
no open question blocks the next phase; acceptance criteria are verifiable. Requirements say what, never how. A plan's steps are concrete enough to act on, ordered without broken intermediate states, and together cover every acceptance criterion.
Grounded bar: every finding names the document the mistake originates in and a citation verifiable blind — file path + lines + verbatim quote, ticket id + quoted text, or design frame id; zero findings is a valid outcome. The reviewer also reports, per source class, what it probed and what it could not reach — unreachable is unchecked, never skipped silently.
Done when the reviewer has returned its findings — possibly none — and its source coverage.
A finding is a conclusion too: before any edit, try to disprove each one. Open its citation and confirm it exists as quoted **and proves the point** — related evidence is not proof — then hunt for what contradicts it: a written reason the reviewer missed, a code path elsewhere. Disproved → dropped, kept for the summary with why. Each survivor is:
changes what gets built beyond what the ticket states (most Future fit findings). A deviation with no written reason is suspected too — it may be a decision nobody recorded — unless the artifact contradicts itself on it (a requirement its acceptance criteria miss, a plan missing what its upstream requires) or the code proves its text wrong.
Done when every finding is dropped, proven or suspected.
One finding at a time, recommending a disposition with a one-line why, worded via `explain-in-simple-language` when available — t
A collection of generic agentic tools for common engineering tasks, designed to work with any AI agent on any kind of software project.
Make a project ready for AI agentic engineering by converging it toward a canonical…
Attach pasted images, files or URLs to a fetched ticket, saved beside its ticket file and…
Check how much of a ticket is already implemented — split it into requirement blocks, judge…
Draft, rewrite, or refine a doc for maximum token economy without losing any rule or intent.…
Author or refine a skill for maximum token economy without losing intent. Use when creating…
Audit what auto-loads into an agent session's context window and suggest lean, reversible…