@dzhechkov/skills-meta
Feature ADR native QE opt-in uses the installed CLI-owned convergence helper, bounded measurement and durable history with a default three-cycle ceiling. Legacy synchronous standalone convergence remains supported; see feature-adr/modules/08-qe.md for prepare, evaluate, explicit repair and failure limits.
If bytes change before first evaluation, native evaluate retains valid old-snapshot receipt origins and conditions while reporting not-established/native-repair-required. Follow with explicit begin-repair and fresh independent verification of the new snapshot. Recovery preserves authority and the three-cycle ceiling; old evidence never closes changed bytes.
Current package version: 0.9.75.
Site: https://aicoding.space · Source: https://github.com/djd1m/dz-harness/tree/main/packages/skills-meta
The canonical meta-skill pack — the development-process skills, packaged as Agent Skills for distribution and cross-platform use.
The feature-adr skill carries eight core and six extended pinned agentic-qe protocol directories with schemas and evals. Its modules own the checkpoints in Reference Mode; the bundled files do not install the upstream runtime or execute extended agents.
For Codex project hooks, the canonical feature-adr skill now separates event context from
deterministic receipt checks and explicit QE/checkpoint decisions. A Stop event or exit zero does
not approve a gate or authorize teaching. Future automated dz teach needs evidence binding,
dedupe and a proposed/accepted decision record. Plain Reference mode uses pinned methods only;
it does not imply MCP or fleet execution.
For project veto evidence, Codex 0.160.0 public hook lifecycle notifications can bind selected
project source and the exact denied nonce command to a completed turn. They do not expose the
attempted tool name. Bounded host acceptance on 0.160.0 observed the production hook blocking the
exact nonce command; removed-hook and neighboring-project controls created sentinels. This does
not establish recall or coverage of other tool surfaces.
Step 6 can dispatch a separately installed Claude Code code-goal-planner agent when the active planner route selects Sonnet. This skills pack supplies the reference protocol for Codex and for hosts without that agent; it does not itself install a project agent.
MEASURED package inventory: 21 development-process skills. Reproduce from this package directory
with npm pack --dry-run --json: count <skill>/SKILL.md entries and all files beneath each
skill directory. The Files column counts shipped files, including the skill document and its assets.
MEASURED inventory from npm pack --dry-run --json (the procedure above):
| Skill | Files | Purpose |
|---|---|---|
feature-adr | 114 | ADR-driven feature development pipeline with eight core and six extended pinned agentic-qe references, per-stage model routing, cross-model QE and evidence-based gates |
design-tokens | 1 | DESIGN.md design-token contract — lint (WCAG AA) / diff / export Tailwind+DTCG (wraps @google/design.md) |
knowledge-extractor | 10 | Harvest reusable knowledge from a project (/harvest) |
audit | 4 | Whole-codebase 5-phase deep audit-and-act (recon → self-challenge → P0-P3 → approval → fix) |
goap-research-ed25519 | 22 | GOAP-planned research with ed25519-signed provenance |
design-thinking | 5 | Stanford d.school 5-phase + validate product discovery |
agentshield-scan | 4 | Security scanner for .claude/ agent configurations |
adversarial-verifier | 4 | Adversarial claim verification / paranoid fact-checking |
capture-adr | 4 | Lightweight mid-conversation ADR capture (MADR 4.0) |
context-window-management | 4 | Priority-based pruning + checkpoint/restore under context pressure |
external-comms-gate | 4 | Screens outbound comms for confidential-info leaks |
reflection-loop | 4 | Standalone critique → revise self-review cycle |
session-recap | 1 | Mid-session status protocol: mandatory refresh, then exactly four points (the requester's words, proof rather than green tests, human-vs-machine blockers, and owner-tagged next steps), with no new work during the recap. Distinct from dz recap, the records-only calendar retrospective. |
skill-advisor | 4 | Recommends which skills / presets / packages fit a task (meta-advisor) |
skill-crystallizer | 4 | Auto-creates / combines / repairs skills from traces |
structured-reasoning | 4 | Reasoning-strategy router (ToT / CoT / compression) |
understand-anything-bridge | 4 | Bridge to the Understand-Anything knowledge-graph tooling |
explore | 3 | Socratic task clarification |
problem-solver-enhanced | 1 | First-principles + TRIZ + game-theory problem solving |
loop-plan-author | 2 | Author agent LOOPS as typed loop-plan/1 plans — four patterns, INV-1..8, claims/defers, USER regions, reading a run's trace. Packaged for Claude Code as @dzhechkov/loop-designer-plugin; execute rendered JavaScript with the Claude Code Workflow host, or interpret the plan with portable dz workflow run (CLI prerequisites apply) |
decision-mockups | 13 | Plain-language decision context in HTML or compact text, CSS before/after and offline flow/boundary diagrams. Opt-in v2 preserves four answer states, material context and a separate complete JSON document; shipped stdlib check_answer.py checks the receiver's current revision. Legacy export remains compatible. Vendored mirror — canon/tests in @dzhechkov/skills-decision-mockups; sync explicitly with dz sync-canonical decision-mockups --from packages/@dzhechkov/skills-decision-mockups/decision-mockups. Structural checks do not prove truth, semantic viability or human benefit. |
goap-research-ed25519— self-learning (optional, since this release). When@dzhechkov/harness-cliis on PATH, the bundled research skill recalls prior METHOD lessons at the start of an investigation and records new ones at four named moments. Without it the skill behaves exactly as before and says so once — it is detected, never required. Lessons go to a SEPARATE store (<project>/.health-brain/.dz) and never to the shared one; recall reads both, so engineering lessons transfer in and medical ones do not leave. A format check refuses identifier shapes (email, phone, record numbers) — it does NOT judge whether a lesson describes a method or a person, and says so: that judgement is the agent's, per the teach protocol. Seeskills/goap-research-ed25519/SKILL.md.
Feature-adr structural implementationVerified:true has phase-specific meaning: ideation verifies
corrected ADR, architecture and phase artifacts at the current revision/nonce, without claiming
production code or implementation tests exist; QE requires actual implementation and relevant tests.
False or missing structural verification still blocks. Receipt fields, boolean strength, originating
reviewer ownership, phase/nonce/manifest binding and legacy receipt compatibility remain unchanged.
The gate checks receipt consistency and freshness; independent reviewers judge the evidence.
Install
# Via dz CLI (recommended) — the current meta preset; session-recap wiring is deferred
dz init --target claude-code --preset meta
# Or pick specific skills
dz init --target claude-code --select audit,skill-advisor,feature-adr
# Or install the package directly
npm install @dzhechkov/skills-meta
Canonical vs legacy — the coexistence model
Each canonical skill here is projected into the repository's .claude/skills/<name>/ tree by the
root sync command. This is deliberate (ADR-002); session-recap follows the same projection path:
.claude/skills/— the legacy tree Claude Code reads today. Preserved, untouched (ADR-001).packages/@dzhechkov/skills-meta/— the canonical source, ready to be published as an npm package and compiled to any platform.
During the coexistence period the two are kept in agreement by
scripts/sync-canonical-to-legacy.mjs, which compiles each canonical skill with
@dzhechkov/adapter-claude and compares the result to the legacy tree. While
the copies match, sync is a no-op — it never modifies a legacy skill.
Status
Canonical feature-adr guidance now records real Plain stage usage through the existing writer and scoped reader. Actual source IDs/metadata are preserved; unknown dimensions/prices remain null. Wf and FA sources, independent verification and static family estimates are explicitly distinguished.
Plain Step 8 now documents existing round/run/task flags for the Claude qe-bridge in the execution project. Explicit identity validates before review and remains frozen; round close records full, partial or window-only assurance. Native Workflow QE continues its own review without a second bridge.
Step 7 now ships feature-adr/scripts/build-coder-context.mjs, shared by Workflow and plain coding.
It inlines literal requirements, plan tasks and ADR Decision/Confirmation with bounded reads; required
input failures refuse coding, and current document fingerprints invalidate stale code reuse. Plain
mode runs the helper and embeds its successful block as instructed by the canonical Code module.
next — carries the canonical feature-adr gate and module with requirement coverage (C8), ADR ids
by in-file heading, NOT-ESTABLISHED on an unclosed fence in a declaration input, the planner prompt naming its
inputs, and ONE bracketed plan-repair round (backup → snapshot → repair → snapshot → re-gate → archive or
proven restore). Staged: not yet versioned or published. See @dzhechkov/skills-feature-adr for the full account.
0.9.51 — carries the canonical feature-adr module with the new mandatory Observability section
in Step 5: how the shipped feature will be watched, with "nothing to observe" accepted as a complete
answer. See @dzhechkov/[email protected].
0.9.50 — carries the canonical feature-adr skill with the C6 amendment-integrity fix (each
amendment is scoped to its own block instead of a three-line window, closing both a false refusal and
a false pass) and the Step-6 planner instruction that the amendment row is machine-read. See
@dzhechkov/[email protected] for the full account.
0.9.44 — a fix to the vendored feature-adr gate script, no new skills.
The bundled K2 plan-completeness gate now tells an ABSENT 00_complexity_assessment.md from a
deliberate skip: a missing file is a WARNING that names the missing artifact, while a present file
carrying no acid table is an honest SKIP. Both used to report as a clean skip, so the acid check
silently switched itself off whenever Step 0 wrote nothing — MEASURED 2026-08-21, 66 of 199 features
carried that file and the last four in a row did not.
0.9.42 — adds decision-mockups (19 → 20 skills): the owner-facing decision page — plain
language, options with a stated price and a named recommendation, and a copy-answers button whose
output is meant to be pasted straight back into a chat. Vendored from
@dzhechkov/skills-decision-mockups (the canonical home; heal this mirror with
dz sync-canonical decision-mockups --from packages/@dzhechkov/skills-decision-mockups/decision-mockups
— a bare sync resolves THIS pack as canonical and would overwrite the real home). Lands together with
@dzhechkov/[email protected], which adds the same id to the meta preset.
0.9.5 — part of the extended-a-migration feature. Additive
only: these are copies; the originals in .claude/skills/ are never moved or
modified.
How to use
Skills auto-activate — your agent loads a skill when your task matches its trigger phrases (defined in each skill's SKILL.md frontmatter). For example:
- "Audit the codebase" (or
/audit) →audit - "Which skill should I use for X?" →
skill-advisor - "Implement feature X" →
feature-adr
To see a skill's exact triggers and assets: dz info <skill-id>. To find one: dz registry search <term>.
Write discipline — why the writing steps now build a skeleton first
MEASURED in the field on 2026-08-19 and 2026-08-20, two independent runs of the canonical pipeline against a ~130-file repository: the steps that must produce a document — Step 5 (Architecture) and Step 6 (Plan) — never reached a write. 18 attempts, zero file writes in every one. They died in the READING phase: a shell result returns, the agent thinks about its next move, stays silent past the runtime's 180-second inactivity watchdog, and is killed. One run cost ~4M tokens and 1h54m.
The failure is deterministic, not unlucky: thinking time grows with accumulated history, so on a large enough repository unbounded exploration guarantees the kill. And the cause was in the instructions, not the runtime — every writing step said, in effect, "read the code, write the document", with no reading budget and no order of operations. An agent obeying literally reads until it dies.
The owner's control experiment is the whole evidence base, and it is n=1: same slice, same inputs, same model, ONE added paragraph about write discipline → a 10-section skeleton on disk 8 minutes in, first attempt, after six consecutive deaths.
So every document-producing step now carries:
- the FIRST file write happens within the first ~12 tool calls — a skeleton of section headings with one line of intent under each;
- then fill it one section per edit, no edit longer than ~120 lines;
- never go more than 2 minutes without a tool call;
- when unsure whether to read more or to write — write.
What this does not do, stated plainly: it does not stop the deaths. The watchdog is unchanged.
It changes what survives one — previously nothing, now a skeleton on disk that the next attempt can
continue. The ~12 and ~120 are chosen parameters, not measured optima. Two possible regressions
were named by an independent reviewer and are not measured: an early skeleton may anchor a
structure chosen before understanding, and section-per-edit raises tool-call overhead.
Steps whose deliverable is a returned verdict rather than a document (the complexity router) are deliberately excluded — "skeleton first" is nonsense there.
0.9.45 — the bundled feature-adr Step-8 module now describes the amendment gate as the command
dz amendment-check instead of a judgement the reviewer is asked to make. Text only; no pipeline change.
Historical signature-scope correction
The pack's .dz-manifest.json now covers exactly the files this package SHIPS, as reported by
npm pack — not everything present in the author's working tree. Previously it signed files that
files[] excludes (typically CHANGELOG.md), so every recipient's verifier reported
listed in the manifest but absent and the pack read as TAMPERED. Re-signing at any earlier moment
could not fix that: those files were never in the tarball.
That earlier correction changed signature coverage only. The current staged candidate also updates decision-mockups.
Shared Markdown masking in feature-adr gates
The standalone plan-completeness gate ships with markdown-masker.mjs, copied byte-for-byte from
harness-core's src/markdown-masker.ts. It runs without a core build. Amendment checks, swarm briefs
and K2 share the parser while retaining their existing unclosed-block and indentation policies.
The four-space indented-code gap remains open for amendment checks and K2; swarm briefs retain their
existing masking of indented code. Versions are unchanged in this staged change.
Codex companion for feature-adr
dz statusline --watch --project "/path/to/worktree" --brain "/path/to/shared-brain" --slug "feature-slug" --run-id "stable-run-id" adds an explicitly launched adjacent terminal
companion, including Plain runs. Until installed, invoke the worktree-built
node packages/@dzhechkov/harness-cli/dist/bin.js statusline --watch .... This extends the existing
command inventory. Canonical feature-adr guidance supplies the quoted producer/observer recipe: record
a stable run ID and actual tier at the START of each step, then done on real completion; recall/teach
remain scoped to the shared brain. Project run state and brain counts are separate. One slug retains
one latest run; report freshness is not process liveness and stage position is not passed gates.
The readonly companion requires a dedicated stdout TTY, uses serial 2-second refreshes (0.25–60
allowed), sanitizes/clips text and handles resize. Below 40x8 it shows a size warning. Ctrl-C/SIGTERM
exit 0; output failure 1; invalid/piped watch 2. Failed/absent counts and optional values are explicit;
watch v1 ETA is unavailable and global source inventory omitted. No stdin/raw mode, models, logical
store writes or automatic terminal/settings changes. Normal SQLite ephemeral WAL/SHM sidecars are
permitted. One-shot Claude text/JSON/ETA remain unchanged. Codex native footer capability is not
asserted; parity names manual dz statusline --watch access.
Review convergence in /feature-adr now uses one installed Node gate in Plain and native Workflow.
Step 3.5 closes before planning; Step 8 closes before completion and delivery, including S tier and
resumed runs. The host measures current artifact bytes and preserves originating reviewer conditions;
focused rework includes an explicit author delta/new-risk assessment and independent own-condition
verification. Serious primary or precision findings remain visible at the round ceiling.
Missing or stale receipts, legacy resume, unavailable reviewers and read-only Codex mode A pause with host-driven repair instructions. Parallel native design can require focused review after sibling artifacts settle. Clean initial supported review closes without invented conditions or an extra review. This is a receipt consistency/freshness gate, not reviewer authentication or semantic proof; existing Confirmation, scope, family and budget gates still apply. No automatic repair loop or new CLI command.
Repeated prepare retains all pending paths until verified closure. Actual fallback families bind before dispatch while prior owners remain required. Same-slug QE repair uses current own-reviewer evidence bound to the complete historical checkpoint; original findings/grades remain visible, and failed Confirmation still blocks delivery.
Before fallback, host prepare retains independently written pending receipt findings under the original owner even if that reviewer returned null. Unreconciled pending evidence pauses dispatch for originating-reviewer repair; it cannot be replaced by a clean fallback to obtain closure.
After a reviewed artifact is renamed or removed, convergence keeps its previously host-bound condition scope in the measured manifest; an absent old path has a null digest. Current discovered paths remain measured. Both prepare and evaluate validate the retained snapshot and reject unbound or unsafe scope paths. The original condition and originating reviewer verification remain required; a rename alone does not close a finding.
QE also measures the exact .dz/guard.json policy configuration when it is in the current Git index or selected review base. This includes newly staged and intent-to-add files; base-tracked deletions retain a null digest. Both declared targets and discovered changes use this rule. Untracked files absent from that base do not qualify through older history. Other .dz/ runtime files remain excluded, and existing path, symlink, freshness and reviewer-ownership checks still apply.
Pre-code target admission
Step 7 now runs the installed read-only scripts/check-code-targets.mjs before literal context,
code-cache lookup or any coder route, on every entry including auto/force resume. It reuses the
colocated review manifest authority: strict targets, circular exclusions, discovered source changes,
path/Git safety and the exact .dz/guard.json index-or-selected-base exception are unchanged.
Missing planned files remain admissible. Workflow requires admitted JSON plus the actual producer's
terminal RC_EXIT:0 witness; failure refuses coding/cache access. Admission preserves review state
and existing .fa-state/base-ref (HEAD only when absent); actual coder initialization never resets
an existing base. Plain uses the same executable helper and mandatory instructions, without an
automatic dispatcher. Admission observes current bytes; final QE remains the freshness check.
Literal implementation-plan targets
Feature-ADR K2 completeness, native admission and core plan authority share a raw-text trailing
EXPECTED_CODE_TARGETS: grammar: one uppercase column-zero marker with optional ASCII padding,
LF-only declaration, nonempty - path rows and trim()-empty blanks through EOF. Suffix headings,
prose, alternate bullets, CR/CRLF or duplicate raw markers refuse the whole block; markers inside
examples/comments also count. Payloads stay literal, including backticks and whitespace. Existing
path authority and native I/O/history bounds still apply. Core establishes no valid subset from
malformed or rejected/rewritten plan paths. Explicit args retain their separate normalization and
precedence; coder text remains diagnostic. The standalone grammar helper ships beside the skill's
native checker and K2 script. No Markdown authenticity is inferred.
Native QE keeps its default ceiling at three. dz qe-rounds --source native --action begin-continuation --project <root> --slug <feature> --reviewers <actual-roster-json> --owner-approval <inline-json> can admit exactly one additional cycle after three witnessed cycles whose active cycle has never closed. A second ordinary continuation refuses. The target is pinned before its fourth origin; prepare and repair cannot redirect it. Fresh independent receipts, original reviewer conditions, author delta assessment and checkpoint verification still govern closure. An admitted checkpoint remains required if its file is removed or replaced; restore the original checkpoint and obtain independent verification before closure. Prepare retains its digest, and replay rejects a closed continuation without matching checkpoint evidence.
The exact flat declaration has schema native-qe-owner-approval-1, a UUIDv4 approvalId, nonempty owner (≤256 characters), decision (≤2048), evidenceSource (≤4096), canonical projectRoot and featurePath, journalId, sequence, eventDigest, cycleId, prior revision and distinct measured targetRevision. Native read-only reporting exposes the predecessor event digest. Inline JSON and its serialized declaration are capped at 16 KiB. Obtain the changed target digest from the bounded artifact manifest; consent must explicitly bind it. No helper fills missing consent or updates stale bindings. Exact committed retries can return the admitted cycle without appending.
Native QE also admits one terminal begin-final-continuation only when the ordinary continuation is the active, witnessed fourth cycle, its latest evaluation is unresolved, and that cycle has never closed. It requires a changed measured target, fresh nonce, original --reviewers and --owner-approval; it cannot coexist with begin-post-ci-correction. Core exports NATIVE_QE_FINAL_CONTINUATION_API_VERSION = 1, the API exposes finalContinuationVersion: 1, and the installed helper exports NATIVE_REVIEW_FINAL_CONTINUATION_API_VERSION = 1; both capabilities are required. The read summary reports finalContinuation: { capacity: 1, used, targetRevision }, where capacity is a fixed maximum rather than present eligibility. Admission preserves the journal prefix, reviewer roster, conditions, checkpoint and accumulated delta, pins the fifth target before origin, and leaves the witnessed count at four until fresh original-role evidence arrives. No sixth cycle is available. For this new action only, the same bounded native-qe-owner-approval-1 declaration may truthfully record earlier owner consent to a limited repair procedure and a later operator binding of the measured target: owner names the actual authorizing owner, decision states that the operator bound the target under that delegation and the owner did not inspect the then-future digest, and evidenceSource identifies the real consent context and binding record. It does not authenticate a person, prove delegated scope, or imply owner inspection or acceptance of future bytes. Missing consent or scope must stop admission; the operator and independent reviewer assess the actual evidence. The existing ordinary continuation and CLOSED4 post-CI approval meanings are unchanged. Use only an independently accepted matching packed CLI/core/helper combination before authoritative use.
This is surviving local owner evidence, not human authentication or acceptance. Core and the CLI-owned installed helper require continuation capability 1 while legacy APIs remain 1. Older readers reject the extended event explicitly. Install only accepted, signed local packed candidates before authoritative use; no npm publication is required. Journal/head/host publication remains conservatively crash detecting under the existing lock, with no filesystem atomicity claim.
Native QE also supports one explicit begin-post-ci-correction after the current witnessed fourth cycle is CLOSED. Supply the original --reviewers, strict --owner-approval declaration (native-qe-post-ci-owner-approval-1, including the exact descriptor SHA256), and --correction-evidence <repo-relative-json-file>. Core and the installed helper require post-CI capability 2; history and ordinary continuation APIs remain 1. Default ceiling three and the ordinary continuation remain unchanged; the separate fifth target is pinned and no sixth cycle is available.
The canonical local descriptor binds failed CI bytes, one existing test fixture patch, enumerated accepted Git integration, unchanged dependencies, genuine color/neutral full controls and the complete successful mandatory CI identity set. Logs stream within separate 16 MiB/file, four-log/64 MiB bounds; existing source and transaction limits remain unchanged. This is local measured evidence, not remote authentication. Required proof and checkpoints remain obligations. The correction QA namespace must contain exactly its descriptor, referenced proofs and digest-bound excludedEvidence supplements, including tracked, untracked and ignored files. Extra entries or changed/missing listed proof block availability; keep inline consent and evolving native/review outputs outside this immutable namespace. Complete fifth receipts may list reviewers in any order; durable closure preserves the original roster order. A mutating evaluate that records loss or replacement invalidates earlier per-reviewer proof verifications; restored bytes require fresh originating receipts bound to the durable observation anchor. Reads and refused prepare do not remember transient loss. Use accepted signed packed local packages before authoritative admission; this change does not publish or activate packages globally.
Schema 2 (native-qe-post-ci-evidence-2) adds exact scope.importedArtifacts rows (path, absent before, SHA256 digest, byte size) for foreign feature history imported by a normal two-parent merge. Schema 1 remains supported with its original closed shape. Selected foreign roots must be absent from the failed/base/preimport trees and have identical complete membership and bytes in accepted, integrated, qualified and current views. Ignored or untracked extras, active-feature/authority paths, source/proof overlap, links and file/directory aliases refuse admission. Imported support shares the existing 2 MiB/file and 16 MiB source aggregate; schema 2 jointly bounds immutable proof/support to 256 files and 256 derived directories. Source manifests remain limited to 256 entries. Support is reobserved by core; recorded loss requires fresh bound originating reviews after restoration.