@deftai/directive-content 0.74.0 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QUICK-START.md +2 -3
- package/Taskfile.yml +10 -0
- package/UPGRADING.md +38 -0
- package/commands.md +18 -1
- package/package.json +1 -1
- package/scm/github.md +50 -0
- package/tasks/engine.yml +4 -1
- package/tasks/verify.yml +11 -1
- package/templates/agents-entry.md +16 -71
- package/skills/deft-build/SKILL.md +0 -20
- package/skills/deft-interview/SKILL.md +0 -16
- package/skills/deft-pre-pr/SKILL.md +0 -16
- package/skills/deft-review-cycle/SKILL.md +0 -16
- package/skills/deft-roadmap-refresh/SKILL.md +0 -16
- package/skills/deft-setup/SKILL.md +0 -20
- package/skills/deft-swarm/SKILL.md +0 -16
- package/skills/deft-sync/SKILL.md +0 -16
package/QUICK-START.md
CHANGED
|
@@ -59,12 +59,11 @@ Three checks here, in this order. The first match wins; later checks only run wh
|
|
|
59
59
|
- ! If the managed section is **byte-identical** to the current template render BUT the declared install path does NOT resolve, jump to **Case K ("Install location mismatch")** in Step 2. Refreshing the managed section is a documented no-op when the content already matches -- Case K is a different failure class than Case G and demands a different remediation (#1046 finding #2).
|
|
60
60
|
3. **Legacy skill-path resolution (v0.19 AGENTS.md backstop).** Parse `../AGENTS.md` for any token matching `deft/skills/<name>/SKILL.md` (the legacy v0.19 path shape) and verify the file exists under `./skills/<name>/SKILL.md` (relative to this QUICK-START.md).
|
|
61
61
|
- ! If any referenced path does not exist on disk, treat `../AGENTS.md` as **stale** -- jump to Case G in Step 2.
|
|
62
|
-
-
|
|
63
|
-
- If all referenced paths exist and none are redirect stubs, continue to 1c.
|
|
62
|
+
- If all referenced paths exist, continue to 1c.
|
|
64
63
|
|
|
65
64
|
Priority ordering: Case G (byte-different content) always wins over Case K (install-path mismatch) because the refresh path is the higher-priority remediation -- when the template content has moved on, the refresh closes BOTH the content drift and any incidental install-path mismatch that the new content might re-introduce. Case K only fires when the content is byte-current AND the path is unresolved -- the exact "refresh would be a no-op" failure class issue #1046 documents.
|
|
66
65
|
|
|
67
|
-
**Big-jump joint check (Case G+H gate).** Before acting on ANY Case G routing above (a byte-different managed section, or an unresolved
|
|
66
|
+
**Big-jump joint check (Case G+H gate).** Before acting on ANY Case G routing above (a byte-different managed section, or an unresolved legacy skill path), first ALSO evaluate the 1c pre-cutover check below against `../`. ! If 1c ALSO holds (real pre-v0.20 `SPECIFICATION.md` / `PROJECT.md` present), the project is in the **joint big-jump state** where both the AGENTS.md refresh (Case G) and the pre-cutover migration (Case H) are due — jump to **Case G+H** (combined single-session remediation) in Step 2 instead of Case G. The combined path runs the refresh and the migration in one session and emits a single restart, avoiding the wasted Case G → restart → Case H round-trip. If 1c does not hold, route to Case G as usual.
|
|
68
67
|
|
|
69
68
|
### 1c. Are there pre-v0.20 artifacts at the user's project root?
|
|
70
69
|
|
package/Taskfile.yml
CHANGED
|
@@ -383,6 +383,7 @@ tasks:
|
|
|
383
383
|
- verify:pack-drift
|
|
384
384
|
- verify-wip-cap-framework-self-check
|
|
385
385
|
- verify:agents-md-budget
|
|
386
|
+
- verify-eval-health-relocation-framework-check
|
|
386
387
|
- vbrief:validate
|
|
387
388
|
- codebase:validate-structure
|
|
388
389
|
- verify:codebase-map-fresh
|
|
@@ -422,6 +423,15 @@ tasks:
|
|
|
422
423
|
vars:
|
|
423
424
|
CLI_ARGS: "--allow-over-cap"
|
|
424
425
|
|
|
426
|
+
verify-eval-health-relocation-framework-check:
|
|
427
|
+
internal: true
|
|
428
|
+
desc: "Framework self-check shim for verify:eval-health-relocation (#2373)."
|
|
429
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
430
|
+
cmds:
|
|
431
|
+
- task: verify:eval-health-relocation
|
|
432
|
+
vars:
|
|
433
|
+
CLI_ARGS: "--base-ref origin/master"
|
|
434
|
+
|
|
425
435
|
# s2-deterministic-gate (#1166): deterministic validation gate for strategy
|
|
426
436
|
# output shape. Runs on every `task check` (including CI). Implemented in
|
|
427
437
|
# scripts/validate_strategy_output.py. Respects Grok Build Windows rules
|
package/UPGRADING.md
CHANGED
|
@@ -68,6 +68,44 @@ From v0.55.1 onwards `@deftai/directive` is published on npm. The canonical cons
|
|
|
68
68
|
|
|
69
69
|
Start a **new agent session** after steps 2–3 so the refreshed AGENTS.md and skills load from a clean context.
|
|
70
70
|
|
|
71
|
+
## OpenPackage tiered skills (optional, #2462)
|
|
72
|
+
|
|
73
|
+
The npm engine (`npm i -g @deftai/directive`) remains the canonical runtime handler for gates, lifecycle, and `.deft/core/` refresh. **OpenPackage** is an optional cross-harness distribution path for placing tiered consumer skills into Cursor, Codex CLI, and OpenCode native directories — without a Directive-owned skill router.
|
|
74
|
+
|
|
75
|
+
1. Install OpenPackage CLI: `npm i -g opkg`
|
|
76
|
+
2. From a maintainer checkout (or release tree), sync skills into the package:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
node packaging/openpackage/sync-skills.mjs
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
3. From your **project root** (after `directive init`):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
opkg install /path/to/directive/packaging/openpackage/deft-directive-skills --platforms cursor codex opencode
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Tiers:** **daily-core** (setup, sync, build, pre-pr, review-cycle, triage) for session bootstrap; **standard** for operational workflows; **advanced** (release, swarm, debug, article-review) for deferred install. Full lists: `packaging/openpackage/deft-tiers.json`. Detail: [`packaging/openpackage/deft-directive-skills/README.md`](../packaging/openpackage/deft-directive-skills/README.md).
|
|
89
|
+
|
|
90
|
+
Consumer AGENTS.md stays pointer-thin — scan `.deft/core/REFERENCES.md` Skills Index; do not enumerate skills in the managed section.
|
|
91
|
+
|
|
92
|
+
### Always-on bootstrap budget (DD-3, #2463)
|
|
93
|
+
|
|
94
|
+
`verify:agents-md-budget` now itemizes the always-on bootstrap surface:
|
|
95
|
+
|
|
96
|
+
- **Managed AGENTS.md** bytes (fail-closed ratchet via `plan.policy.agentsMdBudget.absoluteMaxBytes`)
|
|
97
|
+
- **Harness skill frontmatter** bytes (Cursor `<agent_skill>` shape; advisory unless `skillFrontmatterMaxBytes` is set)
|
|
98
|
+
- **Bootstrap hooks** bytes (0 until #2438 ships)
|
|
99
|
+
|
|
100
|
+
The north-star target is **≤8192 B / ~2k tok combined**. On Cursor with all skills injected, managed AGENTS.md (~16.8 KB) plus skill frontmatter (~7.7 KB) still exceeds that target — remediation paths:
|
|
101
|
+
|
|
102
|
+
1. **Tier skills** — install only the daily-core six (`setup`, `sync`, `build`, `pre-pr`, `review-cycle`, `triage`) via OpenPackage; set `plan.policy.agentsMdBudget.skillFrontmatterTier` to `daily-core` or export `DEFT_AGENTS_MD_BUDGET_SKILL_TIER=daily-core`.
|
|
103
|
+
2. **Thin managed AGENTS.md** — continue epic #2369 relocation; push bulk to `commands.md`, `scm/github.md`, and skills.
|
|
104
|
+
3. **Shorten SKILL.md descriptions** — advanced-tier skills (`release`, `swarm`, `debug`, `article-review`, …) are the largest frontmatter offenders.
|
|
105
|
+
4. **Optional ratchet** — seed `plan.policy.agentsMdBudget.skillFrontmatterMaxBytes` at the measured tier size when you want fail-closed DD-3 growth control.
|
|
106
|
+
|
|
107
|
+
Non-native-skill harnesses (Codex CLI, OpenCode) report 0 B frontmatter; set `harnessProfile: none` in policy when appropriate.
|
|
108
|
+
|
|
71
109
|
## xBRIEF layout migration (#2034 / #2110)
|
|
72
110
|
|
|
73
111
|
After upgrading to a release that ships the xbrief rename, convert legacy on-disk layout if `deft doctor` reports a `vbrief/` tree or `x-vbrief/` reference tokens:
|
package/commands.md
CHANGED
|
@@ -99,11 +99,16 @@ Common commands:
|
|
|
99
99
|
Before implementation work, use:
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
|
+
git status --short --branch
|
|
102
103
|
task verify:story-ready -- --vbrief-path xbrief/active/<file>.xbrief.json
|
|
103
104
|
deft xbrief:preflight -- xbrief/active/<file>.xbrief.json
|
|
104
105
|
```
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
Gate 0 `task verify:story-ready` machine-checks working-tree cleanliness (or `--allow-dirty`), the target xBRIEF in `xbrief/active/` with `plan.status == "running"`, and the dispatch envelope's `## Allocation context` consent token (#1378). A `swarm-cohort` section is ready only when `allocation_plan_id` AND `batching_rationale` are non-null. Complete stories with `task scope:complete -- <active-story-path>`.
|
|
108
|
+
|
|
109
|
+
**Story Start Gate (#1378):** Before starting any new implementation story or switching stories, run `git status --short --branch`. If the working tree is dirty, stop and summarize the current branch, modified/untracked files, and whether the changes appear related to the next story — ask the operator to choose: commit existing work, stash existing work, include existing work in the current story, or stop. ⊗ Do not begin a new story while unrelated dirty work is present without explicit operator approval. When invoked as part of a swarm cohort dispatch, the approved Phase 5 allocation plan satisfies batching consent (#954); between stories checkpoint-commit it and proceed — do not pause to ask the operator mid-cohort. Promote/activate via `task scope:promote -- <path>` / `task scope:activate -- <path>`; preflight with `deft xbrief:preflight -- <active-story-path>`.
|
|
110
|
+
|
|
111
|
+
The implementation gate succeeds only for active scope xBRIEFs with `plan.status == "running"`. Do not infer implementation intent from lifecycle vocabulary — require explicit action-verb directives (`build`, `implement`, `ship`, `swarm`, `run agents`, `start agent`) per #810.
|
|
107
112
|
|
|
108
113
|
```mermaid
|
|
109
114
|
flowchart TD
|
|
@@ -176,6 +181,18 @@ Current status: the validation, extractor, provider, registry, generated MAP, an
|
|
|
176
181
|
|
|
177
182
|
Use `task --list` for the exact current verify namespace.
|
|
178
183
|
|
|
184
|
+
## Session-start ritual (#1149)
|
|
185
|
+
|
|
186
|
+
Full always-on contract for the interactive session-start ritual and its gated verifier (#1149 / #1348).
|
|
187
|
+
|
|
188
|
+
- ! On every interactive session start, run `deft session:start` (or `task session:start` in framework source) after loading AGENTS.md. Records quick-tier ritual in `.deft/ritual-state.json`: alignment confirmation, branch-policy disclosure, `deft verify:tools` guidance, default-branch sync warnings, and `deft triage:welcome` one-liner. State is worktree- and HEAD-bound; stale after `plan.policy.sessionRitualStalenessHours` hours (default 4).
|
|
189
|
+
- ! Before any code-writing tool call or `start_agent` implementation dispatch, run `deft verify:session-ritual -- --tier=gated`. Gated tier fails closed unless quick-tier state is fresh; lazily records `deft doctor` and `deft verify:cache-fresh` entrypoints. Step 0 of the pre-`start_agent` gate stack.
|
|
190
|
+
- ? Postpone with `deft session:start -- --defer step=reason` (`alignment`, `branch_policy`, `triage_welcome`, `doctor`, `cache_fresh`).
|
|
191
|
+
- Headless workers / CI MAY set `DEFT_SESSION_RITUAL_SKIP=1`; verifier exits 0 but warns when bypass hides failure.
|
|
192
|
+
- ⊗ Self-report ritual complete without fresh `deft session:start` state; ⊗ bypass `deft verify:session-ritual` before implementation dispatch; ⊗ reorder/skip/merge ritual tiers without operator override.
|
|
193
|
+
|
|
194
|
+
**Pre-`start_agent` gate stack (#1149/#1348):** (0) `deft verify:session-ritual -- --tier=gated` → (1) `deft verify:story-ready` → (2) `deft xbrief:preflight` → (3) `deft verify:cache-fresh` → (4) `deft verify:branch` + hooks → (5) `start_agent`.
|
|
195
|
+
|
|
179
196
|
```mermaid
|
|
180
197
|
flowchart TD
|
|
181
198
|
Session["task session:start"] --> Ritual["task verify:session-ritual -- --tier=gated"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deftai/directive-content",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.75.0",
|
|
4
4
|
"description": "Shippable Directive framework content in the consumer .deft/core/ layout (C1 flatten), plus the engine surfaces (.githooks/, Taskfile.yml, tasks/) the deposit wires. Python-free per #2022 Phase 3. Refs #11, #1669, #1967.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
package/scm/github.md
CHANGED
|
@@ -172,6 +172,38 @@ When running under the Grok Build runtime on Windows + pwsh 7+, `run_terminal_co
|
|
|
172
172
|
|
|
173
173
|
Refs #798, #1353 (root-cause audit), #2157.
|
|
174
174
|
|
|
175
|
+
## Safe subprocess capture (#1366)
|
|
176
|
+
|
|
177
|
+
Rationale + recurrence record: `docs/analysis/2026-07-02-agents-md-incident-rule-rationale.md` § Safe subprocess capture (#1366).
|
|
178
|
+
|
|
179
|
+
- ! The `scripts/` Python directory was removed in #2022 (TS-native migration). All subprocess capture rules from this section now apply to TS tooling only -- the `scripts/_safe_subprocess.py` helper no longer exists; TS equivalents use the Node.js `child_process` / `execa` patterns and are not subject to Python locale-codepage decode issues.
|
|
180
|
+
- ! TS scripts that shell out for parsable output (gh, git, task) MUST use `execa` or `child_process.spawn` with `encoding: "utf8"` -- never `execSync` with default encoding when the output may carry non-ASCII glyphs (Greptile bodies, gh REST bodies, user-authored commit messages).
|
|
181
|
+
- ⊗ Use `execSync` / `spawnSync` without explicit `encoding: "utf8"` when capturing `gh api` output that may contain non-ASCII glyphs -- the default `Buffer` return is the TS analogue of the Python locale-codepage bug.
|
|
182
|
+
- ⊗ Reference `scripts/_safe_subprocess.py`, `scripts/pr_merge_readiness.py`, or any deleted Python script as a live implementation path -- the entire `scripts/` directory was removed in #2022.
|
|
183
|
+
|
|
184
|
+
## Cascade automation surface (#1369)
|
|
185
|
+
|
|
186
|
+
Rationale + recurrence record + cross-references: `docs/analysis/2026-07-02-agents-md-incident-rule-rationale.md` § Cascade automation surface (#1369). Canonical surface: `task pr:wait-mergeable-and-merge`.
|
|
187
|
+
|
|
188
|
+
- ! Cascade automation on the Grok Build hybrid path MUST go through `task pr:wait-mergeable-and-merge -- <N> --repo <owner>/<repo>`. Do NOT hand-roll a `while ...; do task pr:merge-ready ...; done` shell loop or a per-cascade ad-hoc Python monitor. The helper composes the resilient wait-until-ready loop (#1368) with the Layer-3 protected-issue check (#701) and the `gh pr merge --squash --delete-branch --admin` invocation behind a single three-state exit (0 merged / 1 timeout-or-escalation / 2 config error).
|
|
189
|
+
- ! The per-PR atomic gate (`task pr:merge-ready -- <N> && gh pr merge <N> --squash --delete-branch --admin`) documented in `content/skills/deft-directive-swarm/SKILL.md` Phase 5 -> 6 STILL applies for any in-cascade merge an operator runs by hand. The Wave-3 cascade surface is the automated wrapper; the per-PR atomic gate is the manual freshness-window-atomic check. The two co-exist -- one does not retire the other.
|
|
190
|
+
- ! When `--protected <issue-numbers>` is supplied, the helper runs the protected-issue check (#701) BEFORE the wait loop. A persistent `closingIssuesReferences` link short-circuits the cascade with exit 1 (escalation) AHEAD of any `gh pr merge` call. New cascade scripts MUST preserve this ordering -- the protected-issue check is structurally a pre-condition that cannot be resolved by waiting.
|
|
191
|
+
- ⊗ Hand-roll a cascade `while ... task pr:merge-ready` shell loop (or equivalent ad-hoc Python monitor) when `task pr:wait-mergeable-and-merge` is available. The Wave-1+2 hardening is in the helpers the new task composes; hand-rolled loops re-introduce the `head: None` / babysit-each-PR failure mode #1369 closes.
|
|
192
|
+
- ⊗ Run `gh pr merge <N>` from inside a cascade automation script without first chaining the Layer-3 protected-issue check (#701) when the PR is known to reference any umbrella / staying-OPEN issue. The cascade surface (`task pr:wait-mergeable-and-merge` with `--protected`) is the canonical compose-point; hand-rolled merges that skip the chain re-surface the PR #700 / PR #401 persistent-link recurrence.
|
|
193
|
+
|
|
194
|
+
## SCM tooling (#884 / #1145)
|
|
195
|
+
|
|
196
|
+
Rationale: `docs/analysis/2026-07-02-agents-md-incident-rule-rationale.md` § SCM tooling — prefer ghx (#884).
|
|
197
|
+
|
|
198
|
+
- ! When you need to invoke the GitHub CLI (`gh issue view`, `gh pr list`, `gh api`, ...) and `ghx` is on PATH, prefer `ghx` over `gh` -- the surface is identical and the cached responses are 10x faster on repeated calls
|
|
199
|
+
- ! Fall back to `gh` transparently when `ghx` is not on PATH; do NOT fail or warn -- this keeps the rule additive for consumers who have not yet opted in
|
|
200
|
+
- ~ Maintainers SHOULD run `task setup` to install `ghx`; the install is consent-gated and never auto-runs by default. Pass `--yes` for non-interactive (CI / scripted) approval
|
|
201
|
+
- ⊗ Auto-install `ghx` without explicit operator consent -- `task setup` MUST prompt before invoking the upstream installer; the only non-interactive paths are `--yes` (explicit approval) or `DEFT_SETUP_GHX_SKIP=1` (explicit opt-out)
|
|
202
|
+
- ! Raw `gh` calls outside the TS SCM shim layer are forbidden by `task verify:scm-boundary` (#1145 / N5 -- partial down-payment on #445 / #935 Workstream 6). The TS verb layer MUST route `gh` calls through the canonical SCM shim; the deterministic gate scans the canonical scope globs and fails `task check` when any of them route around the shim. Non-`github-issue` sources raise `NotImplementedError` so a consumer on GitLab / Gitea / local sees the deferred abstraction immediately.
|
|
203
|
+
- ? Power users MAY install `ghx` manually via the upstream `install.ps1` (Windows) or `install.sh` (macOS / Linux); the `task setup` prompt is a convenience, not a gate
|
|
204
|
+
|
|
205
|
+
See also § ghx cache proxy (#884) for install surfaces and read-only vs mutation rules.
|
|
206
|
+
|
|
175
207
|
## Windows / ASCII Conventions for Machine-Editable Sections
|
|
176
208
|
|
|
177
209
|
Agent `edit_files` operations can fail when structured file sections contain Unicode characters that do not round-trip cleanly through Windows toolchains (xref warpdotdev/warp#9022). The following rules apply to **machine-editable structured sections**: ROADMAP.md phase bodies, CHANGELOG.md entries, and Open Issues Index rows.
|
|
@@ -257,6 +289,24 @@ task setup:ghx -- --yes # non-interactive CI / scripted approval
|
|
|
257
289
|
- ! Use live `gh` for mutations (POST/PATCH/PUT/DELETE) and for immediate read-back after a mutation — ghx is a cached GET proxy only
|
|
258
290
|
- ⊗ Use `ghx api` for multi-arg write invocations — ghx accepts a single positional path arg; writes fall through to `gh`
|
|
259
291
|
|
|
292
|
+
## Branch policy (#746 / #747)
|
|
293
|
+
|
|
294
|
+
Three consumer-facing surfaces enforce the branch-policy contract:
|
|
295
|
+
|
|
296
|
+
- `deft check` — consumer pre-commit quality gate. In vendored `.deft/core` installs it runs consumer-safe Deft install/lifecycle gates and does NOT run framework source-repo self-tests. Run `deft check:framework-source` only when explicitly validating the vendored framework payload itself (#1519).
|
|
297
|
+
- `deft verify:branch` — refuses default-branch commit unless `plan.policy.allowDirectCommitsToMaster = true` (typed) or `DEFT_ALLOW_DEFAULT_BRANCH_COMMIT=1`.
|
|
298
|
+
- `.githooks/pre-commit` / `pre-push` — installed via `deft setup`; verify via `deft verify:hooks-installed`. After a framework upgrade, run `deft update` to refresh hook templates (#2049).
|
|
299
|
+
- `deft policy:show --field=allowDirectCommitsToMaster` — inspect policy; `deft policy:allow-direct-commits -- --confirm` writes typed override with audit row.
|
|
300
|
+
- `deft verify:forward-coverage` — forward-coverage gate (#1310), wired into `deft check` + pre-commit (`--staged`); document exceptions via `--allow-list <path>`.
|
|
301
|
+
|
|
302
|
+
When `plan.policy.allowDirectCommitsToMaster = true`, the agent MUST surface at session start (after alignment confirmation):
|
|
303
|
+
|
|
304
|
+
> "[deft policy] Direct commits to the default branch are ENABLED (source: typed). Branch-protection policy is OFF."
|
|
305
|
+
|
|
306
|
+
Phrasing from `deft policy:show --field=allowDirectCommitsToMaster`. When OFF (default), absence of the disclosure signals enforcing state. Override paths: `deft policy:show` / `deft policy:enforce-branches` / `deft policy:allow-direct-commits -- --confirm` / `DEFT_ALLOW_DEFAULT_BRANCH_COMMIT=1`.
|
|
307
|
+
|
|
308
|
+
⊗ Begin a session that will commit/push without surfacing policy when `allowDirectCommitsToMaster=true`.
|
|
309
|
+
|
|
260
310
|
## Local git hooks (#747 / #2049)
|
|
261
311
|
|
|
262
312
|
Project-root `.githooks/` enforce branch policy and encoding gates through the **`deft` CLI only** — no Python `scripts/*.py` dispatch (#2049). Hooks are installed idempotently via `deft setup` (`git config core.hooksPath .githooks`).
|
package/tasks/engine.yml
CHANGED
|
@@ -13,7 +13,10 @@ tasks:
|
|
|
13
13
|
pm-run:
|
|
14
14
|
internal: true
|
|
15
15
|
desc: "Run a package.json script via pnpm (bare or Corepack pin) or explicit DEFT_PACKAGE_MANAGER=npm (#2410)."
|
|
16
|
-
dir
|
|
16
|
+
# Run from USER_WORKING_DIR, NOT an absolute DEFT_ROOT `dir:` — Windows go-task
|
|
17
|
+
# doubles absolute dirs onto the invocation cwd (`C:\repo\C:\repo`, #2126 / #2467).
|
|
18
|
+
# The node script still receives absolute DEFT_ROOT as argv and uses it as cwd.
|
|
19
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
17
20
|
cmds:
|
|
18
21
|
- |
|
|
19
22
|
set -eu
|
package/tasks/verify.yml
CHANGED
|
@@ -384,7 +384,7 @@ tasks:
|
|
|
384
384
|
ENGINE_CMD: 'verify:wip-cap --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
385
385
|
|
|
386
386
|
agents-md-budget:
|
|
387
|
-
desc: "
|
|
387
|
+
desc: "Layered AGENTS.md budget instrument (#645 + #2450). Fail-closed relative ratchet: counts the managed section and the unmanaged region separately (the #1309 propagation duplicates content across the marker) and fails when either region grows past plan.policy.agentsMdBudget. Seeded at current size, so it ships green; growth past the ratchet fails. ADVISORY absolute north-star: also reports managed-section size vs ≤8 KB / ~2k tok (#2372 layered instrument) without affecting exit codes in Wave 1. Three-state exit (0 within / 1 over ratchet / 2 config error)."
|
|
388
388
|
dir: '{{.USER_WORKING_DIR}}'
|
|
389
389
|
deps:
|
|
390
390
|
- task: :engine:_ts-build
|
|
@@ -395,6 +395,16 @@ tasks:
|
|
|
395
395
|
vars:
|
|
396
396
|
ENGINE_CMD: 'verify:agents-md-budget --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
397
397
|
|
|
398
|
+
eval-health-relocation:
|
|
399
|
+
desc: "Fail-closed eval:health no-regression gate for epic #2369 rule-relocation PRs (#2373). Classifies diffs touching AGENTS.md, content/templates/agents-entry.md, content/skills/**/SKILL.md, or content/packs/** and requires eval:health to not regress against the committed baseline at xbrief/.eval/results/eval-health-baseline.json. Skips (exit 0) when no relocation paths are in the diff. Seed baseline once with --seed-baseline after master is healthy. Three-state exit (0 pass or skip / 1 regression / 2 config error). -- task verify:eval-health-relocation [-- --base-ref <ref> | --staged] [--quiet] [--seed-baseline]"
|
|
400
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
401
|
+
deps:
|
|
402
|
+
- task: :engine:_ts-build
|
|
403
|
+
cmds:
|
|
404
|
+
- task: :engine:invoke
|
|
405
|
+
vars:
|
|
406
|
+
ENGINE_CMD: 'verify:eval-health-relocation --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
407
|
+
|
|
398
408
|
agents-md-advisory:
|
|
399
409
|
desc: "ADVISORY (never fail-closing) consumer AGENTS.md legibility signal (#2155). Counts the UNMANAGED (project-authored) region only -- the framework-owned managed section is excluded -- and compares it against the SOFT, operator-adjustable budget plan.policy.agentsMdAdvisory.unmanagedSoftMaxLines (generous default when unset). Consumer companion to the maintainer-only #645 ratchet; deliberately NOT a check:consumer dependency (advise->observe->enforce per #1419). Default posture ALWAYS exits 0; the opt-in --enforce flag promotes an over-budget region to a hard cap (exit 1). Raising the field is the documented, no-friction way to accept growth and silence the nudge."
|
|
400
410
|
dir: '{{.USER_WORKING_DIR}}'
|
|
@@ -64,21 +64,11 @@ Deft is installed in .deft/core/. Full guidelines: .deft/core/main.md
|
|
|
64
64
|
|
|
65
65
|
## Session-start ritual (#1149)
|
|
66
66
|
|
|
67
|
-
! On every interactive session start
|
|
68
|
-
|
|
69
|
-
! Before any code-writing tool call or `start_agent` implementation dispatch, run `deft verify:session-ritual -- --tier=gated`. The gated tier fails closed unless the quick-tier state is fresh, then lazily records the doctor and cache-fresh Python entrypoints (the checks exposed to operators as `deft doctor` and `deft verify:cache-fresh`) in the same ritual state. The verifier is now step 0 of the pre-`start_agent` gate stack; any non-zero exit aborts dispatch.
|
|
70
|
-
|
|
71
|
-
? If a quick or gated step must be intentionally postponed, record the decision with `deft session:start -- --defer step=reason` using one of `alignment`, `branch_policy`, `triage_welcome`, `doctor`, or `cache_fresh`. Deferred steps satisfy the verifier but remain auditable in `.deft/ritual-state.json`.
|
|
72
|
-
|
|
73
|
-
⊗ Self-report the session-start ritual as complete without a fresh `deft session:start` state, or bypass `deft verify:session-ritual` before implementation dispatch. Headless workers and CI MAY set `DEFT_SESSION_RITUAL_SKIP=1`; the verifier exits 0 but warns when the bypass hides a failure.
|
|
74
|
-
|
|
75
|
-
⊗ Reorder, skip, or merge the ritual tiers above without an explicit operator override -- the canonical order is what makes the downstream gate stack composable.
|
|
76
|
-
|
|
77
|
-
`deft doctor` is the install-integrity + toolchain + managed-section freshness probe (#1308); when the managed section is stale it points at `deft agents:refresh`, and when the payload is behind it emits the upgrade command `npm i -g @deftai/directive@latest`. Install/upgrade via npm (`npm i -g @deftai/directive`; Node ≥ 20) — see `.deft/core/UPGRADING.md` for the bootstrap/upgrade path (the legacy Go installer is a legacy/offline bridge only). `deft triage:welcome` emits the triage one-liner and nudges `deft triage:welcome --onboard` when state is incomplete; its D2 4-hour suppression window and comparison-key set are owned by the `triage:welcome` implementation (#1143 / #1279).
|
|
67
|
+
! On every interactive session start run `deft session:start`; before any code-writing or `start_agent` dispatch run `deft verify:session-ritual -- --tier=gated` (stale after `plan.policy.sessionRitualStalenessHours`; records `deft verify:tools` / `deft doctor` / `deft agents:refresh` / `npm i -g @deftai/directive@latest` entrypoints; #1149 / #1348) — full quick/gated tiers, defer steps, and headless bypass in `.deft/core/commands.md` § Session-start ritual.
|
|
78
68
|
|
|
79
69
|
## WIP cap
|
|
80
70
|
|
|
81
|
-
|
|
71
|
+
! Respect `plan.policy.wipCap` (default 20) — at cap `deft scope:promote` refuses; relief via `deft scope:demote --batch --older-than-days 30` (#2319 / #1121). Full WIP workflow: `.deft/core/.agents/skills/deft-directive-swarm/SKILL.md`.
|
|
82
72
|
|
|
83
73
|
## xBRIEF layout (#2034 / #2110)
|
|
84
74
|
|
|
@@ -101,12 +91,7 @@ Projects on the legacy `vbrief/` tree are still read-accepted; run `deft migrate
|
|
|
101
91
|
|
|
102
92
|
## Deterministic questions runtime obligation (#1470)
|
|
103
93
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- ! ANY agent-initiated structured question — whether via host `ask_user_question` / `AskQuestion` tooling or a numbered menu rendered in chat — inside OR outside any skill flow MUST include `Discuss` and `Back` as the final two options, in that order, and MUST obey the Discuss-pause semantic documented verbatim in `.deft/core/contracts/deterministic-questions.md`.
|
|
107
|
-
- ! Before emitting any structured or numbered question, self-check: confirm `Discuss` and `Back` are present as the final two options; if not, add them before calling the tool or rendering the menu. Host-native `Other` / free-text affordances are NOT substitutes for `Discuss` (#767 / #431).
|
|
108
|
-
- ⊗ Emit a structured or numbered question without `Discuss` and `Back` as the final two options — including ad-hoc orchestration approvals, dispatch confirmations, and decision walkthroughs outside interview/setup/refinement skills.
|
|
109
|
-
- ⊗ Treat the host UI's automatic `Other` option as the stop-and-discuss escape hatch — `Other` widens the answer space; `Discuss` exits the deterministic flow entirely (see contract).
|
|
94
|
+
! Any agent-initiated structured question MUST include `Discuss` and `Back` as the final two options — full Discuss-pause semantic in `.deft/core/contracts/deterministic-questions.md` (#1470 / #767).
|
|
110
95
|
|
|
111
96
|
## Issue body→comments reading (#2143)
|
|
112
97
|
|
|
@@ -141,82 +126,42 @@ Skill routing (which skill answers which trigger) is not a table in this policy
|
|
|
141
126
|
|
|
142
127
|
## Review-surface precedence (#2308)
|
|
143
128
|
|
|
144
|
-
!
|
|
145
|
-
|
|
146
|
-
~ Host review tools MAY be folded in as *advisory* finding sources inside the review cycle (the #2019 harness-aware-reviewer path) -- their findings are batched alongside Greptile / bot findings, never treated as the review of record.
|
|
147
|
-
|
|
148
|
-
⊗ Substitute a host-native review subagent type or `review-*` skill for `deft-directive-review-cycle` as the review surface -- the host review tools are advisory inputs, not a replacement. This is the 3rd recurrence of the #1862 / #2261 intent-routing / wrong-review-surface class (see also #2019, #2018).
|
|
129
|
+
! Route review work through `deft-directive-review-cycle` — full workflow in `.deft/core/.agents/skills/deft-directive-review-cycle/SKILL.md`; host review tools (`bugbot`, `security-review`, `review-*` skills) are advisory-only inputs, not the review of record (#2308 / #1862 / #2261 / #2019).
|
|
149
130
|
|
|
150
131
|
## Value feedback and attribution (#1709)
|
|
151
132
|
|
|
152
|
-
|
|
153
|
-
- ! Trusted-org local auto-enable (#2376) -- for a repo whose GitHub origin belongs to a company-owned org (built-in default `deftai`; extend via the `DEFT_VALUE_AUTOENABLE_ORGS` env override), LOCAL emit + session readback resolve ON with `source=org-auto` and network/upstream OFF, with NO per-repo or per-machine confirmation: org membership IS the consent for local, no-egress collection on company-owned resources. An explicit typed `valueFeedback` block always wins (including `enabled: false`); a non-matching org or no origin remote stays OFF (fail-safe).
|
|
154
|
-
- ! Attribution records are enriched at emit time (#2376) with `repo`, `directive_version`, `install_id` (a stable per-checkout uuid under gitignored `.deft-cache/`), and `schema_version`, so a later collector can aggregate cross-repo without re-deriving provenance.
|
|
155
|
-
- ! Value claims MUST be attributed-only -- point to concrete logged events ("encoding gate caught 2 corruptions"), never vague quality claims. Silence when the ledger has nothing attributable for the session slot.
|
|
156
|
-
- ! Budgeted awareness -- at most one session readback line when `sessionLine` is allowed; repeat suppression uses a 4-hour window per attribution event id (parity with #1279 triage welcome debounce). Pull-based detail is `deft value:show`, not pushed.
|
|
157
|
-
- ! Gap escalation to `deftai/directive` is confirmation-gated -- route conversational filing through `deft-directive-feedback`; the agent drafts + dedups; the operator approves before `deft feedback:file -- --confirm`. Use `Refs #1709` in upstream bodies, not `Closes`.
|
|
158
|
-
- ! Gap escalation is consumer-only -- no-op inside the directive maintainer repo unless `DEFT_VALUE_SELF_DOGFOOD=1`. Trusted-org auto-enable still turns LOCAL emit ON inside the maintainer repo, but session readback stays gated behind `DEFT_VALUE_SELF_DOGFOOD=1`.
|
|
159
|
-
- ⊗ Enable any NETWORK or upstream value-feedback surface (upstream gap escalation / `deft feedback:file`) without operator confirmation -- trusted-org auto-enable authorizes LOCAL, no-egress collection ONLY.
|
|
160
|
-
- ⊗ File upstream framework-gap issues without operator confirmation or past duplicate detection.
|
|
161
|
-
- ⊗ Treat unattributed self-promotion as value feedback -- if there is no ledger event, emit nothing.
|
|
133
|
+
! `plan.policy.valueFeedback.enabled` defaults OFF — opt-in via `deft policy:show --field=valueFeedback` / `deft policy:enable-value-feedback -- --confirm`; pull-based detail via `deft value:show`; full rules in `.deft/core/.agents/skills/deft-directive-feedback/SKILL.md` (#1709). Trusted-org auto-enable uses `source=org-auto` (#2376); gap escalation via `deft feedback:file` is confirmation-gated.
|
|
162
134
|
|
|
163
135
|
## Eval and framework health (#1703)
|
|
164
136
|
|
|
165
|
-
|
|
166
|
-
- ! Run `deft eval:health` when orienting, after gate/policy/doc changes, or when session start emits a budgeted `[eval]` nudge (score drop or contradictory gate; 4-hour debounce, parity #1279/#1709). Tier 2 is for maintainer release eval (`eval:run -- --model M`; `eval:report -- --champion V --challenger V --model M`).
|
|
167
|
-
- ⊗ Discover eval only via CHANGELOG/`deft --list` — AGENTS.md and `deft triage:help` are canonical. ⊗ Treat Tier 1 telemetry as operator-invoked.
|
|
137
|
+
! Run `deft eval:health` when orienting or after gate/policy changes (Tier 0; 4-hour debounce). Maintainer release eval: `deft eval:run` / `deft eval:report` (#1703).
|
|
168
138
|
|
|
169
139
|
## Branch policy & branch verification
|
|
170
140
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
- `deft check` -- authoritative consumer pre-commit quality gate. In vendored `.deft/core` installs it runs consumer-safe Deft install/lifecycle gates and does NOT run framework source-repo self-tests. Run `deft check:framework-source` only when explicitly validating the vendored framework payload itself (#1519).
|
|
174
|
-
- `deft verify:branch` -- branch gate wired into the `deft check` aggregate; refuses a commit on the default branch unless `plan.policy.allowDirectCommitsToMaster = true` (typed) or `DEFT_ALLOW_DEFAULT_BRANCH_COMMIT=1` is set.
|
|
175
|
-
- `.githooks/pre-commit` / `pre-push` -- local hooks installed via `deft setup`; verify via `deft verify:hooks-installed`. After a framework upgrade, run `deft update` to refresh hook templates to the current TS-native `deft verify:*` / `deft preflight-gh` wiring (#2049).
|
|
176
|
-
- `deft policy:show --field=allowDirectCommitsToMaster` -- inspect the resolved policy; `deft policy:allow-direct-commits -- --confirm` writes the typed override with an audit row.
|
|
177
|
-
- `deft verify:forward-coverage` -- forward-coverage gate (#1310): a NEW source file (`scripts/`, `src/`, `cmd/`, `packages/*/src`, or `*.py`/`*.go`/`*.ts`/`*.tsx`, excluding tests + `*.d.ts`) added without a corresponding test in the SAME diff fails the gate. Wired into `deft check` + the pre-commit hook (`--staged`); document genuine exceptions (shims, generated code) via `--allow-list <path>`. Mirrors the `deft verify:encoding` (#798) prose->deterministic migration.
|
|
141
|
+
! Work on feature branches — `deft verify:branch`, `deft verify:forward-coverage`, hooks, and `deft check` enforce default-branch protection (#746 / #747); full surfaces in `.deft/core/scm/github.md` § Branch policy.
|
|
178
142
|
|
|
179
143
|
## Branch Policy Disclosure (#746)
|
|
180
144
|
|
|
181
|
-
When
|
|
182
|
-
|
|
183
|
-
> "[deft policy] Direct commits to the default branch are ENABLED (source: typed). Branch-protection policy is OFF."
|
|
184
|
-
|
|
185
|
-
This phrasing is produced by `deft policy:show --field=allowDirectCommitsToMaster` and stays in lockstep with the typed surface (#746). When the policy is OFF (default; `allowDirectCommitsToMaster=false`), no session-start disclosure is required -- the absence of the disclosure line itself signals the default-enforcing state.
|
|
145
|
+
! When `plan.policy.allowDirectCommitsToMaster = true`, surface policy at session start via `deft policy:show --field=allowDirectCommitsToMaster` (#746) — full phrasing and override paths in `.deft/core/scm/github.md` § Branch policy.
|
|
186
146
|
|
|
187
|
-
|
|
147
|
+
## Contextual guardrails (runtime-detect lazy-load)
|
|
188
148
|
|
|
189
|
-
|
|
149
|
+
Contextual / platform-specific rules lazy-load from `.deft/core/scm/github.md` — load the matching section **before** the risky operation when your session matches a trigger (#2157 / #2369):
|
|
190
150
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
- ! Editing files with non-ASCII glyphs from PowerShell (especially PS 5.1) -- enforced at commit by `deft verify:encoding` (#798).
|
|
196
|
-
- ! Running shell commands under the Grok Build Windows + pwsh 7+ runtime -- piped/redirected commands leak wrapper text (#1353); PTY-based Warp + Claude are exempt.
|
|
151
|
+
- ! **PowerShell / Windows** → § PowerShell platform-conditional rules (#798 / #1353); encoding gate: `deft verify:encoding`.
|
|
152
|
+
- ! **TS subprocess capture** → § Safe subprocess capture (#1366).
|
|
153
|
+
- ! **Cascade / batch merge** → § Cascade automation surface (#1369); canonical `deft pr:wait-mergeable-and-merge`.
|
|
154
|
+
- ! **GitHub CLI / SCM shim** → § SCM tooling (#884 / #1145); boundary gate: `deft verify:scm-boundary`.
|
|
197
155
|
|
|
198
156
|
## Development Process
|
|
199
157
|
|
|
200
158
|
### Implementation Intent Gate (#810)
|
|
201
159
|
|
|
202
|
-
|
|
203
|
-
- ! Require an explicit action-verb directive (`build`, `implement`, `ship`, `swarm`, `run agents`, `start agent`) from the user before invoking the preflight gate or `start_agent` for implementation. When intent is ambiguous, ask one targeted question instead of inferring.
|
|
204
|
-
- ⊗ Infer implementation intent from lifecycle vocabulary ("do the full PR process", "start the work", "poller agents"), branching language, or workflow shape. Workflow-shape vocabulary is NOT authorization to spawn an implementation agent.
|
|
205
|
-
- ⊗ Treat affirmative continuation phrases (`yes`, `go`, `proceed`, `do it`) as implementation authorization unless the prior turn explicitly proposed implementation. Broad approval is not a substitute for an explicit action-verb directive.
|
|
206
|
-
|
|
207
|
-
**Pre-`start_agent` gate stack (#1149/#1348):** Before dispatching an implementation sub-agent via `start_agent`, run the gates in the canonical order: (0) session ritual gate (#1348, `deft verify:session-ritual -- --tier=gated`) -> (1) story-start Gate 0 (#1378, `deft verify:story-ready -- --vbrief-path <active-story-path> [--allocation-context <dispatch-envelope-file>]`) -> (2) xBRIEF implementation-intent gate (#810, `deft xbrief:preflight -- <path>`) -> (3) `deft verify:cache-fresh` (D5 / #1127) -> (4) branch-policy gate (`deft verify:branch` and the `.githooks/pre-commit` / `pre-push` hooks) -> (5) `start_agent`. Any non-zero exit aborts dispatch.
|
|
160
|
+
! Run `deft xbrief:preflight -- <path>` before code-writing (`xbrief/active/` + `plan.status == "running"`); require explicit action-verb directive (`build`, `implement`, `ship`, `swarm`, `run agents`, `start agent`) (#810) — full rules in `.deft/core/commands.md` § Scope xBRIEF Lifecycle; `deft verify:cache-fresh` is gate-stack step 3 in `.deft/core/commands.md` § Session-start ritual.
|
|
208
161
|
|
|
209
162
|
### Story Start Gate
|
|
210
163
|
|
|
211
|
-
|
|
212
|
-
- ! If the working tree is dirty, stop and summarize the current branch, modified/untracked files, and whether the changes appear related to the next story. Ask the operator to choose one path: commit existing work, stash existing work, include existing work in the current story, or stop.
|
|
213
|
-
- ⊗ Begin a new story while unrelated dirty work is present without explicit operator approval.
|
|
214
|
-
- ! Default to one story per branch/PR: resolve exactly one target story xBRIEF path by default, require explicit operator approval plus a short rationale for batching multiple stories, and create a checkpoint commit after each completed story before beginning another story.
|
|
215
|
-
- ! When invoked as part of a swarm cohort dispatch, the approved Phase 5 allocation plan satisfies the "explicit operator approval and a short rationale" requirement above -- the dispatched paths and allocation rationale ARE the consent token. Do NOT re-prompt the parent for batching approval mid-cohort; the all-or-nothing dispatch envelope rule (#954) forbids mid-scope user-approval gates.
|
|
216
|
-
- ! Within a swarm cohort, between stories, the working tree MUST be clean (a checkpoint commit + `deft scope:complete` just landed). If `git status --short` shows uncommitted state between stories, checkpoint-commit it and proceed -- do NOT pause to ask the operator. The dirty-tree "ask the operator" branch above applies only at the FIRST story-start of a fresh branch.
|
|
217
|
-
- ! If the target story is in `xbrief/proposed/`, run `deft scope:promote -- <path>` first; if it is in `xbrief/pending/`, run `deft scope:activate -- <path>`. After activation, run `deft xbrief:preflight -- <active-story-path>` before code-writing.
|
|
218
|
-
- ! After checks pass for the story, complete the lifecycle with `deft scope:complete -- <active-story-path>` before final PR handoff.
|
|
219
|
-
- ! Before dispatching an implementation sub-agent, run the deterministic Gate 0 `deft verify:story-ready -- --vbrief-path <active-story-path> [--allocation-context <dispatch-envelope-file>]` ahead of `deft xbrief:preflight`. It machine-checks a clean working tree (or `--allow-dirty`), the target xBRIEF in `xbrief/active/` with `plan.status == "running"`, and the dispatch envelope's `## Allocation context` consent token; three-state exit (0 ready / 1 not ready / 2 config error). A `swarm-cohort` section is ready only when `allocation_plan_id` AND `batching_rationale` are non-null; an absent section is the solo path. Any non-zero exit aborts dispatch.
|
|
164
|
+
! Before starting stories run `git status --short --branch` and Gate 0 `deft verify:story-ready`; lifecycle via `deft scope:promote -- <path>` / `deft scope:activate -- <path>` / `deft scope:complete -- <active-story-path>` (#1378) — full workflow in `.deft/core/commands.md` § Scope xBRIEF Lifecycle.
|
|
220
165
|
|
|
221
166
|
## Commands
|
|
222
167
|
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<!-- DEFT-PREAMBLE-V1 -->
|
|
2
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
3
|
-
! Before any other instruction in this file or in the consumer AGENTS.md, run `python3 deft/run gate`.
|
|
4
|
-
! If exit code is 0, continue.
|
|
5
|
-
! Otherwise: read `deft/UPGRADING.md`, find the section whose "Applies when" clause matches the state vector printed by the gate, and follow that section verbatim. Respect any "Restart required" directive -- if present, stop and tell the user to start a fresh session after cleanup commands complete.
|
|
6
|
-
|
|
7
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
8
|
-
|
|
9
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
10
|
-
The current replacement skill is `deft-directive-build` (at `skills/deft-directive-build/SKILL.md`).
|
|
11
|
-
|
|
12
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
13
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
14
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
15
|
-
v0.20 `deft-directive-*` skill paths.
|
|
16
|
-
|
|
17
|
-
See:
|
|
18
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
19
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
20
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-interview` (at `skills/deft-directive-interview/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-pre-pr` (at `skills/deft-directive-pre-pr/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-review-cycle` (at `skills/deft-directive-review-cycle/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-refinement` (at `skills/deft-directive-refinement/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<!-- DEFT-PREAMBLE-V1 -->
|
|
2
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
3
|
-
! Before any other instruction in this file or in the consumer AGENTS.md, run `python3 deft/run gate`.
|
|
4
|
-
! If exit code is 0, continue.
|
|
5
|
-
! Otherwise: read `deft/UPGRADING.md`, find the section whose "Applies when" clause matches the state vector printed by the gate, and follow that section verbatim. Respect any "Restart required" directive -- if present, stop and tell the user to start a fresh session after cleanup commands complete.
|
|
6
|
-
|
|
7
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
8
|
-
|
|
9
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
10
|
-
The current replacement skill is `deft-directive-setup` (at `skills/deft-directive-setup/SKILL.md`).
|
|
11
|
-
|
|
12
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
13
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
14
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
15
|
-
v0.20 `deft-directive-*` skill paths.
|
|
16
|
-
|
|
17
|
-
See:
|
|
18
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
19
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
20
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-swarm` (at `skills/deft-directive-swarm/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Deprecated skill path — v0.19 → v0.20 bridge
|
|
2
|
-
|
|
3
|
-
<!-- deft:deprecated-skill-redirect -->
|
|
4
|
-
|
|
5
|
-
This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
|
|
6
|
-
The current replacement skill is `deft-directive-sync` (at `skills/deft-directive-sync/SKILL.md`).
|
|
7
|
-
|
|
8
|
-
Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
|
|
9
|
-
that reference old `deft/skills/deft-*` paths keep working through one release cycle.
|
|
10
|
-
QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
|
|
11
|
-
v0.20 `deft-directive-*` skill paths.
|
|
12
|
-
|
|
13
|
-
See:
|
|
14
|
-
- [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
|
|
15
|
-
- [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
|
|
16
|
-
- [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
|