@manhquy/flow-skill 0.7.4 → 0.7.5

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/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to `@manhquy/flow-skill`. Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning: [SemVer](https://semver.org/).
4
4
 
5
5
 
6
+ ## [0.7.5] — 2026-10-12 — ships skill v0.34.0 (stable / latest)
7
+
8
+ Feature and stability release. Ships skill product **v0.34.0** with PIN v1 status/resume contract, runner concurrency lock guard, C1–C7 runner wave integrity checks, theme-aware brand headers, and cross-platform CI hardening. Installer CLI contract unchanged. Publishes to dist-tag **`latest`**.
9
+
10
+ ### Added
11
+ - **Skill product v0.34.0:**
12
+ - PIN v1 status/resume contract: exact STOP body excerpts reprinted after `NEXT_VERB` on status/resume so compact hosts recover `FLOW_FORCE`, `HALT`, and hollow-done rules (`pin-v1.txt`).
13
+ - AgentKit (`ak:*`) aliases mapped across references.
14
+ - C5 runner integrity check: pack-time SHA-256 in `portable-manifest.json` and bundled `manifest-hashes.json` receipt, verified via `flow doctor`.
15
+ - Theme-aware brand header lockups across docs and wrappers.
16
+
17
+ ### Fixed
18
+ - **Runner concurrency lock:** Atomic `set -C` lock claim guard in `flow.sh` and `attestations.sh` to prevent `mkdir` race condition (#22).
19
+ - **Cross-platform CI hardening:** Normalized harness `_db.py` path for Windows MSYS, fixed i18n CRLF test handling on Windows Git, and expanded Windows CI bash-suite timeout to 60m.
20
+
21
+ ### Changed
22
+ - Bundled skill tree re-synced from monorepo `skills/flow/`.
23
+ - Install: **`npx @manhquy/flow-skill@latest`**.
24
+
6
25
  ## [0.7.4] — 2026-10-11 — ships skill v0.33.0 (stable / latest)
7
26
 
8
27
  Documentation and brand release. Adds theme-aware gate-mark brand header to npm-wrapper READMEs (English and Vietnamese). Ships skill product **v0.33.0**. Installer CLI contract unchanged. Publishes to dist-tag **`latest`**.
package/README.md CHANGED
@@ -12,7 +12,7 @@ Install the **flow** skill into coding agents with one command.
12
12
  | | |
13
13
  |---|---|
14
14
  | **Package** | [`@manhquy/flow-skill`](https://www.npmjs.com/package/@manhquy/flow-skill) (installer CLI) |
15
- | **Current GA** | **0.7.4** — ships skill product **v0.33.0** |
15
+ | **Current GA** | **0.7.5** — ships skill product **v0.34.0** |
16
16
  | **Platforms** | macOS · Linux · Windows (same Node path) |
17
17
  | **Requirement** | Node.js **≥ 22.14** |
18
18
  | **Source** | [github.com/manhquydev/flow-skill](https://github.com/manhquydev/flow-skill) |
@@ -42,7 +42,7 @@ npx @manhquy/flow-skill@latest
42
42
 
43
43
  ```bash
44
44
  npx @manhquy/flow-skill@latest --help
45
- # expect: flow-skill v0.7.x (ships skill v0.33.x)
45
+ # expect: flow-skill v0.7.x (ships skill v0.34.x)
46
46
  ```
47
47
 
48
48
  ### Common commands
@@ -97,7 +97,7 @@ npx @manhquy/flow-skill@latest --yes --all --dry-run --json
97
97
  |----|--------|
98
98
  | `npx @manhquy/flow-skill@latest` | Bare `npx @manhquy/flow-skill` (stale npx cache) |
99
99
  | **Run** the CLI to copy the skill | `npm i` alone (package only; no skill files in agent homes) |
100
- | Pin installer `@0.7.4` if needed | Pin npm `@0.33.0` (skill version ≠ package version) |
100
+ | Pin installer `@0.7.5` if needed | Pin npm `@0.34.0` (skill version ≠ package version) |
101
101
  | Prefer `@latest` | `@rc` (retired / behind) |
102
102
 
103
103
  **Two version axes:** `package.json` version = installer; `SKILL.md` metadata = skill product. Both appear in `--help` and in the `plan` JSONL event (`version` + `skillVersion`).
@@ -145,7 +145,7 @@ rm -rf <project>/.claude/skills/flow
145
145
  |---------|-----|
146
146
  | Agent has no `/flow` after `npm i` | Run `npx @manhquy/flow-skill@latest` (install must **execute**) |
147
147
  | Old skill after reinstall | Always use `@latest`; avoid bare package name |
148
- | `No matching version found` for `@0.33.0` | That is the **skill** version. Use `@latest` or `@0.7.x` |
148
+ | `No matching version found` for `@0.34.0` | That is the **skill** version. Use `@latest` or `@0.7.x` |
149
149
  | Node too old | Install Node ≥ 22.14 (`nvm install 22`, etc.) |
150
150
  | Windows `EBUSY` / `EPERM` | Close the agent holding files under the skill dir; re-run |
151
151
  | Stale install lock | Delete `<parent>/.flow-skill.installing.lock` if reclaim fails |
@@ -155,7 +155,7 @@ rm -rf <project>/.claude/skills/flow
155
155
  ## JSONL (`--json`)
156
156
 
157
157
  ```jsonl
158
- {"event":"plan","version":"0.7.4","skillVersion":"0.33.0","dryRun":false,"scope":"global","targets":["claude"]}
158
+ {"event":"plan","version":"0.7.5","skillVersion":"0.34.0","dryRun":false,"scope":"global","targets":["claude"]}
159
159
  {"event":"install:start","target":"claude","dests":["~/.claude/skills/flow"]}
160
160
  {"event":"install:done","target":"claude","dests":["~/.claude/skills/flow"],"result":"success","error":null,"warnings":[]}
161
161
  {"event":"summary","success":true,"total":1,"attempted":1,"installed":1,"failed":0,"skipped":0,"aborted":false}
package/README_VN.md CHANGED
@@ -12,7 +12,7 @@ Cài skill **flow** vào coding agent bằng một lệnh.
12
12
  | | |
13
13
  |---|---|
14
14
  | **Package** | [`@manhquy/flow-skill`](https://www.npmjs.com/package/@manhquy/flow-skill) (installer CLI) |
15
- | **GA hiện tại** | **0.7.4** — ships skill product **v0.33.0** |
15
+ | **GA hiện tại** | **0.7.5** — ships skill product **v0.34.0** |
16
16
  | **Nền tảng** | macOS · Linux · Windows (cùng code path Node) |
17
17
  | **Yêu cầu** | Node.js **≥ 22.14** |
18
18
  | **Source** | [github.com/manhquydev/flow-skill](https://github.com/manhquydev/flow-skill) |
@@ -42,7 +42,7 @@ npx @manhquy/flow-skill@latest
42
42
 
43
43
  ```bash
44
44
  npx @manhquy/flow-skill@latest --help
45
- # expect: flow-skill v0.7.x (ships skill v0.33.x)
45
+ # expect: flow-skill v0.7.x (ships skill v0.34.x)
46
46
  ```
47
47
 
48
48
  ### Lệnh hay dùng
@@ -97,7 +97,7 @@ npx @manhquy/flow-skill@latest --yes --all --dry-run --json
97
97
  |-----|--------|
98
98
  | `npx @manhquy/flow-skill@latest` | Bare `npx @manhquy/flow-skill` (cache npx có thể cũ) |
99
99
  | **Chạy** CLI để copy skill | Chỉ `npm i` (chỉ thêm package; không cài skill vào agent home) |
100
- | Pin installer `@0.7.4` nếu cần cố định | Pin npm `@0.33.0` (version **skill** ≠ version package) |
100
+ | Pin installer `@0.7.5` nếu cần cố định | Pin npm `@0.34.0` (version **skill** ≠ version package) |
101
101
  | Ưu tiên `@latest` / `@0.7.x` | `@rc` (đã retire / tụt hậu) |
102
102
 
103
103
  **Hai trục version:** `package.json` = installer CLI; `SKILL.md` metadata = skill product. Cả hai hiện trong `--help` và event JSONL `plan` (`version` + `skillVersion`).
@@ -145,7 +145,7 @@ rm -rf <project>/.claude/skills/flow
145
145
  |------------|------------|
146
146
  | Agent không có `/flow` sau `npm i` | Chạy `npx @manhquy/flow-skill@latest` (phải **execute** installer) |
147
147
  | Skill cũ sau khi “cài lại” | Luôn dùng `@latest`; tránh bare package name |
148
- | `No matching version found` với `@0.33.0` | Đó là version **skill**. Dùng `@latest` hoặc `@0.7.x` |
148
+ | `No matching version found` với `@0.34.0` | Đó là version **skill**. Dùng `@latest` hoặc `@0.7.x` |
149
149
  | Node quá cũ | Cài Node ≥ 22.14 (`nvm install 22`, v.v.) |
150
150
  | Windows `EBUSY` / `EPERM` | Đóng agent đang giữ file trong skill dir; chạy lại |
151
151
  | Stale install lock | Xóa `<parent>/.flow-skill.installing.lock` nếu reclaim thất bại |
@@ -155,7 +155,7 @@ rm -rf <project>/.claude/skills/flow
155
155
  ## JSONL (`--json`)
156
156
 
157
157
  ```jsonl
158
- {"event":"plan","version":"0.7.4","skillVersion":"0.33.0","dryRun":false,"scope":"global","targets":["claude"]}
158
+ {"event":"plan","version":"0.7.5","skillVersion":"0.34.0","dryRun":false,"scope":"global","targets":["claude"]}
159
159
  {"event":"install:start","target":"claude","dests":["~/.claude/skills/flow"]}
160
160
  {"event":"install:done","target":"claude","dests":["~/.claude/skills/flow"],"result":"success","error":null,"warnings":[]}
161
161
  {"event":"summary","success":true,"total":1,"attempted":1,"installed":1,"failed":0,"skipped":0,"aborted":false}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manhquy/flow-skill",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "description": "Install the flow skill (buildflow gated build process) into your coding agent(s) via one npx command",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,7 @@ keywords: [flow, buildflow, gate, build, ship, scope, prd, contract, card, deplo
8
8
  license: MIT
9
9
  metadata:
10
10
  author: flow-skill
11
- version: "0.33.0"
11
+ version: "0.34.0"
12
12
  attribution: "Methodology from ai20k-build-phase/buildflow (Tony, arealisticdreamer.com); durable-layer ancestry and improve-ritual spirit from repository-harness (protocol v1 EOL — flow-owned fork); agent patterns from claudekit-engineer, BMAD-METHOD. v0.22 concierge from BMAD bmad-help; forge-idea from bmad-forge-idea (MIT, BMad Code LLC)."
13
13
  ---
14
14
 
@@ -136,7 +136,7 @@ only when `bash` is Git Bash.
136
136
  - Codex second engine: `references/codex-integration.md`.
137
137
  - Antigravity Gemini-3 **third engine**: `references/antigravity-integration.md`
138
138
  (confirm load with `agy inspect`).
139
- - ck-skill layer: `references/claudekit-skills.md`.
139
+ - ck/ak skill layer: `references/claudekit-skills.md`.
140
140
  - Parallel occupancy: `references/host-agnostic-parallel.md`.
141
141
  - Receipts: `references/attestations.md`.
142
142
  - `harness/` is **flow-owned**. Improve via **R-IMPROVE-HARNESS** in
@@ -1,3 +1,3 @@
1
1
  {
2
- "skills/flow/runner/flow.sh": "c023283bd6c2ed103310eeee3a10211c27a5dd79cf0f8dccbd67fc89dcf66a67"
2
+ "skills/flow/runner/flow.sh": "2dcd25dadb2a8636a8065d6e974613949a3421cdf7b61d08a676427dbb07b390"
3
3
  }
@@ -20,13 +20,14 @@ STRIDE categories regardless of which lens above is present. Output INFORMS tria
20
20
 
21
21
  **Agent vs skill:** `security-reviewer` is an **AGENT** (`Task(subagent_type="security-reviewer")`)
22
22
  invoked in subagent isolation — it sees the diff, contract, and acceptance only. `ck-security`
23
- is a **SKILL** (main-context Skill tool, no subagent isolation); it may be used as an optional
23
+ (or `ak:security` — same row, `claudekit-skills.md` Name resolution) is a **SKILL**
24
+ (main-context Skill tool, no subagent isolation); it may be used as an optional
24
25
  inline pass by the orchestrator, but it is **never** the delegated review subagent.
25
26
 
26
- **If `ck-security` is installed**, offer it as a richer alternative / extra threat-model
27
+ **If `ck-security` is installed** (or `ak:security`), offer it as a richer alternative / extra threat-model
27
28
  pass on top of the native ritual (opt-in-with-prompt) — the operator confirms; it is not
28
- auto-fired. Same INFORMS-only rule. After either the native ritual or `ck-security` runs,
29
- record the lazy durable metric via `flow.sh harness intervention add` (the wired-gate
29
+ auto-fired. Same INFORMS-only rule. After either the native ritual or `ck-security` /
30
+ `ak:security` runs, record the lazy durable metric via `flow.sh harness intervention add` (the wired-gate
30
31
  skill-telemetry — `claudekit-skills.md` §"Lazy capture"). See `claudekit-skills.md`.
31
32
 
32
33
  **Portability degrade rung** (detect-first, gate identical on every rung):
@@ -161,7 +162,7 @@ Same parity rule: it INFORMS, never auto-passes/auto-fails. Log the same durable
161
162
  ## Optional lens — review-pr (PR-context, when the card ships as a GitHub PR)
162
163
 
163
164
  The three layers + cross-model lenses all review a **diff**. When the card's change lives as a
164
- **GitHub PR**, offer the `review-pr` SKILL as an additional lens — it adds the PR-context checks a
165
+ **GitHub PR**, offer the `review-pr` SKILL (or `ak:review-pr` — same row) as an additional lens — it adds the PR-context checks a
165
166
  diff-only review structurally can't see: duplicate prior work, AI-slop patterns, breaking-change
166
167
  detection across the whole PR, and CI-blocker triage (with optional `--fix`). It is **distinct from
167
168
  the wired `code-reviewer` agent** (diff lens), not a twin — see `claudekit-skills.md`.
@@ -8,14 +8,18 @@ unbroken where they don't.
8
8
 
9
9
  The host's inline/generic path is always available. Overlay named specialists only when the
10
10
  host registry actually lists them — do not assume a Task tool, ck: agents, or any one vendor.
11
- Detect by checking that registry. Also glob for project-local definitions when unsure:
12
- - ck: agents: `.claude/agents/*.md` (project) and the host agent registry.
11
+ Detect by checking that registry. Specialist names may be **unprefixed** (e.g. `architect`),
12
+ **ck-prefixed** (`ck:architect` / `ck-architect`), or the same token under another kit.
13
+ Strip `ck:` / `ck-` / `ak:` / `ak-` before comparing. Also glob for project-local
14
+ definitions when unsure:
15
+ - specialists: `.claude/agents/*.md` (project) and the host agent registry.
13
16
  - bmad skills: the Skills list (`bmad-*`) and `.claude/skills/bmad-*`.
14
17
 
15
- ## Priority order (operator chose: ck: first, bmad alternative)
18
+ ## Priority order (host specialist first, bmad alternative)
16
19
 
17
20
  For each stage, pick the FIRST available:
18
- 1. **ck: agent** (primary) — planner, researcher, architect, fullstack-developer, code-reviewer, typescript-reviewer, python-reviewer, tester, ui-ux-designer, docs-manager, git-manager, debugger, scout.
21
+ 1. **Host specialist** (primary) — planner, researcher, architect, fullstack-developer, code-reviewer, typescript-reviewer, python-reviewer, tester, ui-ux-designer, docs-manager, git-manager, debugger, scout.
22
+ Specialists may be unprefixed or `ck:`/`ck-`/`ak:` spelled. This is the Codex / Cursor / Claude Code / AgentKit roster.
19
23
  2. **bmad-* skill** (alternative) — bmad-prd, bmad-create-architecture, bmad-spec, bmad-create-story, bmad-dev-story, bmad-code-review, bmad-check-implementation-readiness, bmad-market-research, bmad-technical-research, bmad-qa-generate-e2e-tests.
20
24
  3. **built-in fallback** — the host drafts inline, or spawns a generic `Explore`/`general-purpose` agent. Output shape must match the agent path so the gate is identical.
21
25
 
@@ -1,7 +1,7 @@
1
1
  # Stage -> agent mapping
2
2
 
3
3
  How each buildflow stage delegates to a specialist. Pick the path by `agent-detection.md`
4
- priority (ck: first, bmad alternative, built-in fallback). The artifact + gate are
4
+ priority (host-native / ck: first, bmad alternative, built-in fallback). The artifact + gate are
5
5
  identical across paths; only the drafter changes.
6
6
 
7
7
  **Codex (cross-vendor second engine) column.** When the codex tier is eligible
@@ -9,9 +9,11 @@ identical across paths; only the drafter changes.
9
9
  ladder below: (1) **rescue** — if the chosen path is BLOCKED twice, hand the scoped brief to
10
10
  `codex:codex-rescue` before escalating; (2) **opt-in primary** — the operator may select Codex as
11
11
  the primary drafter for **research** and **build** stages (`codex:codex-rescue --write` /
12
- `codex-companion.mjs task --write`). **Default stays ck:**; Codex-as-primary is operator-selected,
13
- never automatic. The scope/PRD/ADR/Contract judgment stages stay Claude by default (Codex may
14
- still rescue them). The stage gate is identical on the Codex path — Codex drafts, the gate judges. In `teach` mode the host does NOT author — it
12
+ `codex-companion.mjs task --write`). **Default stays ck: / host specialist**
13
+ (`planner` / `ck:planner`); Codex-as-primary is operator-selected,
14
+ never automatic. The scope/PRD/ADR/Contract judgment stages stay the host by default (Codex may
15
+ still rescue them). The stage gate is identical on the Codex path — Codex drafts, the gate judges.
16
+ In `teach` mode the host does NOT author — it
15
17
  gatekeeps; agents assist the operator. In `work`/`auto` mode the host (or a specialist) drafts, then
16
18
  the gate still judges.
17
19
 
@@ -21,8 +23,8 @@ Artifact language: **English for code identifiers/endpoints**. User-facing copy
21
23
  ## Brownfield pre-stage (existing codebase)
22
24
 
23
25
  If the project ALREADY EXISTS, run `/flow assess` first → `flow/00-inspect.md` (current-state map:
24
- stack, functionality/UI/UX vs product goals, risks, test baseline). Delegate to `ck:scout` +
25
- `researcher` (or `bmad-document-project`); the gate is operator-reviewed. This seeds planning (and
26
+ stack, functionality/UI/UX vs product goals, risks, test baseline). Delegate to `scout` /
27
+ `ck:scout` + `researcher` (or `bmad-document-project`); the gate is operator-reviewed. This seeds planning (and
26
28
  the harness) with reality before stage 01. Greenfield projects skip it and start at `/flow next` (00).
27
29
 
28
30
  ## Planning stages (flow/)
@@ -35,16 +37,16 @@ the harness) with reality before stage 01. Greenfield projects skip it and start
35
37
  | 04 ADR | `architect` | `bmad-create-architecture` | inline | `harness decision add` per ADR |
36
38
  | 05 Contract | `planner` | `bmad-spec` (5-field kernel) | inline | — |
37
39
 
38
- **Optional ck-skill enrichments per stage** (the skill layer on top of the agents above; the
40
+ **Optional skill enrichments per stage** (the skill layer on top of the agents above; the
39
41
  agent drafts, a skill adds a distinct verb): the curated whitelist + the rules (skill INFORMS,
40
- gate JUDGES; Claude-side detection; opt-in-with-prompt) live in **`references/claudekit-skills.md`**.
42
+ gate JUDGES; host-side detection; opt-in-with-prompt) live in **`references/claudekit-skills.md`**.
41
43
  Deep-wired into the gate ritual (all opt-in-with-prompt, degrade silently, never auto-pass a
42
- gate): **`ck-predict` at ADR** (5-persona pre-decision debate) and **`ck-scenario` at Contract**
43
- (12-dim edge-case → acceptance + contract tests) — both in `gate-rules.md`; **`review-pr` +
44
- `ck-security` at the Review gate** (PR-context lens / STRIDE+OWASP on security-class cards) — in
44
+ gate): **`ck-predict` at ADR** (or `ak:predict` — 5-persona pre-decision debate) and **`ck-scenario` at Contract**
45
+ (or `ak:scenario` — 12-dim edge-case → acceptance + contract tests) — both in `gate-rules.md`; **`review-pr` +
46
+ `ck-security` at the Review gate** (`ak:review-pr` / `ak:security`; PR-context lens / STRIDE+OWASP on security-class cards) — in
45
47
  `adversarial-review.md`; **`retro` at Retro** (git-history numbers for the operator's line) — in
46
48
  `law/RETRO.md`. After any of these runs at its gate, record the lazy durable metric
47
- (`flow.sh harness intervention add`). Full whitelist + rules: `references/claudekit-skills.md`.
49
+ (`flow.sh harness intervention add`). Full whitelist + Name resolution: `references/claudekit-skills.md`.
48
50
 
49
51
  ## Shipping (inside cards/)
50
52
 
@@ -1,12 +1,13 @@
1
1
  # claudekit skills — the per-stage capability map (the seam)
2
2
 
3
- `/flow` already orchestrates claudekit at the **agent layer** (`agent-detection.md` +
4
- `agent-stage-mapping.md`: 13 ck: agents, ck:→bmad→built-in degrade). This file extends that
5
- same seam to the **skill layer** — the curated set of ck *skills* worth reaching for at each
6
- stage, beyond the wired agents. It is a **whitelist, not a dump**: the kit has ~87 skills and
7
- ~60% are marketing/content noise for a build harness. Only the skills below ever get surfaced.
8
-
9
- This is the single source of truth for the skill map; `agent-stage-mapping.md` points here.
3
+ `/flow` already orchestrates specialists at the **agent layer** (`agent-detection.md` +
4
+ `agent-stage-mapping.md`: host-native / ck: agents, then bmad, then built-in). This file
5
+ extends that same seam to the **skill layer** — the curated set of build skills worth
6
+ reaching for at each stage. It is a **whitelist, not a dump**: ClaudeKit (~87) and
7
+ AgentKit (~100+) both ship marketing/content noise. Only the skills below ever get
8
+ surfaced. ClaudeKit `ck-*` and AgentKit `ak:*` names are the **same rows** (Name
9
+ resolution). This is the single source of truth for the skill map;
10
+ `agent-stage-mapping.md` points here.
10
11
 
11
12
  ## Standalone note (v0.22)
12
13
 
@@ -32,6 +33,33 @@ review natively.
32
33
  missing skill **never lowers a gate** — it only changes whether the enrichment is offered.
33
34
  Rich where the skill exists, unbroken where it doesn't.
34
35
 
36
+
37
+ ## Name resolution (ClaudeKit + AgentKit)
38
+
39
+ Host registries spell the same skill three ways: `ck-<slug>`, `ak:<slug>` /
40
+ `ak-<slug>`, or bare `<slug>`. Strip `ck:` / `ck-` / `ak:` / `ak-` and match the
41
+ slug. Offer the **first listed** alias; never offer two names for one verb.
42
+ AgentKit is not a dependency — absence degrades to the native ritual.
43
+
44
+ | Whitelist row | Also detect |
45
+ |---|---|
46
+ | ck-predict | ak:predict, ak-predict, predict |
47
+ | ck-scenario | ak:scenario, ak-scenario, scenario |
48
+ | ck-security | ak:security, ak-security |
49
+ | ck-loop | ak:loop, ak-loop, loop |
50
+ | ck-graphify | ak:graphify, ak-graphify, graphify |
51
+ | review-pr | ak:review-pr, ak-review-pr |
52
+ | security-scan | ak:security-scan, ak-security-scan |
53
+ | retro | ak:retro, ak-retro |
54
+ | xia | ak:xia, ak-xia |
55
+ | deploy | ak:deploy, ak-deploy |
56
+ | web-testing | ak:web-testing, ak-web-testing |
57
+ | docs-seeker | ak:docs-seeker, ak-docs-seeker |
58
+ | scout | ak:scout, ak-scout |
59
+ | repomix | ak:repomix, ak-repomix |
60
+
61
+ `gkg` / `ak:gkg` stay unwired (single graph pick = ck-graphify / ak:graphify).
62
+
35
63
  ## Cost gate — offer, don't impose
36
64
 
37
65
  The high-value skills below are **opt-in-with-prompt**: at the matching gate you *offer* the
@@ -91,10 +119,10 @@ tail, plumbing via `flow.sh loop-prep`/`loop-log` (this file).
91
119
  6. **ck-loop @ Build/Verify (Implement→Test→Audit→Fix tail)** — when a fix needs more than one
92
120
  experimental attempt against a single numeric target (failing-test count, lint errors, etc.),
93
121
  offer `flow.sh loop-prep <card>` to set up an isolated worktree + Verify/Guard commands, then
94
- invoke the `ck-loop` skill with the printed block (ck-loop stays the untouched execution
95
- engine — flow supplies plumbing only). See "Loop vs two-strikes" below for when to reach for
96
- this instead of the default repair path. The finished run is recorded via `flow.sh loop-log`
97
- (NOT the `intervention` channel below — recording it twice would double-count the same event).
122
+ invoke `ck-loop` or `ak:loop` with the printed block (the loop skill stays the untouched
123
+ execution engine — flow supplies plumbing only). See "Loop vs two-strikes" below. The
124
+ finished run is recorded via `flow.sh loop-log` (NOT the `intervention` channel below —
125
+ recording it twice would double-count the same event).
98
126
 
99
127
  ## Loop vs two-strikes — the one "fix it" decision tree
100
128
 
@@ -105,20 +133,22 @@ different tool for a different situation; do not let operators reach for the wro
105
133
  | Situation | Use | Why |
106
134
  |---|---|---|
107
135
  | Review BLOCKED twice, same model, no metric | two-strikes → cross-model lens | bounded disagreement, not a number |
108
- | One numeric verify command, needs >1 experimental attempt | `flow.sh loop-prep` + ck-loop | open iterate-to-target, git-tracked/revertable |
109
- | Drive failing-tests / lint / perf count to a threshold | ck-loop | Verify is a single number; Direction lower |
136
+ | One numeric verify command, needs >1 experimental attempt | `flow.sh loop-prep` + ck-loop / ak:loop | open iterate-to-target, git-tracked/revertable |
137
+ | Drive failing-tests / lint / perf count to a threshold | ck-loop / ak:loop | Verify is a single number; Direction lower |
110
138
  | Single obvious fix, one retry | default auto repair | cheaper than spinning up a worktree+loop |
111
139
 
112
140
  ## Don't surface (cut on purpose — these add noise, not signal)
113
141
 
114
142
  - **Skill/agent twins** — the wired agent already covers these; surfacing the duplicate skill
115
- doubles the "what do I use" confusion: research/researcher, ck-code-review/code-reviewer,
116
- ck-debug/debugger, test/tester, git/git-manager, ck-plan/planner, docs/docs-manager,
117
- journal/journal-writer, ask, brainstorm. Prefer the **agent** for in-stage execution; reach
118
- for the skill only for a distinct verb the agent lacks (already captured above).
119
- - **Competing orchestrators (cook, vibe, ship, bootstrap)** — each is its own end-to-end
143
+ doubles the "what do I use" confusion: research/researcher, ck-code-review / ak:code-review /
144
+ code-reviewer, ck-debug / ak:debug / debugger, test / ak:test / tester, git / ak:git /
145
+ git-manager, ck-plan / ak:plan / planner, docs / ak:docs / docs-manager, journal /
146
+ ak:journal / journal-writer, ask, brainstorm. Prefer the **agent** for in-stage execution;
147
+ reach for the skill only for a distinct verb the agent lacks (already captured above).
148
+ - **Competing orchestrators (cook, vibe, ship, bootstrap, agentkit, plan, orchestrate, team, handover, issue-to-plan, fix)** — each is its own end-to-end
120
149
  pipeline with its own gates; invoking one inside a flow stage double-gates and fights flow's
121
150
  stage authority. Cherry-pick a sub-step (e.g. ship's merge/PR) at the matching stage only.
151
+ `ak:agentkit` routes *away* from flow — never invoke it mid-gate.
122
152
  - **`worktree` skill** — flow already ships `flow.sh workspace` (git-worktree-per-agent). Pure
123
153
  duplicate; never wire it.
124
154
  - **`bmad-spec` as a gate** — overlaps flow's own `/flow consistency` cross-artifact audit.
@@ -9,8 +9,8 @@ is no fragment loader (ADR-0001).
9
9
 
10
10
  | User input | Runner call | Host duties after |
11
11
  |---|---|---|
12
- | `/flow` | `bash <skill>/runner/flow.sh status` | Relay prose `NEXT ->`, dwell, and (past 10 cards) the compact summary; nothing to author. Optional `status --json` prints one `flow_context/v1` object (`v,stage,gate,next_verb,card,dwell,load`) — **display-only**. Hosts MUST NOT dispatch `next_verb` (`next`/`card`/`card-start`/`check`/`fix-gate`/`auto`/`skip`). Default `/flow` stays prose status. |
13
- | `/flow resume` | `bash <skill>/runner/flow.sh resume` | Read-only session-story; no lock. Optional `resume --budget` caps in-flight cards at 5 with count line; `resume --json` same closed schema as status; display-only, never exec `next_verb`. FAIL/PASS/Never: SKILL.md STOP + Dispatch. |
12
+ | `/flow` | `bash <skill>/runner/flow.sh status` | Relay prose `NEXT ->`, PIN v1 after NEXT_VERB (display-only, do not exec), dwell, and (past 10 cards) the compact summary; nothing to author. Compact recovery is prose status/resume, not `--json`. Optional `status --json` prints one `flow_context/v1` object (`v,stage,gate,next_verb,card,dwell,load`) — **display-only**. Hosts MUST NOT dispatch `next_verb` (`next`/`card`/`card-start`/`check`/`fix-gate`/`auto`/`skip`). Default `/flow` stays prose status. |
13
+ | `/flow resume` | `bash <skill>/runner/flow.sh resume` | Read-only session-story; no lock. PIN v1 after NEXT_VERB, display-only, do not exec. Compact recovery is prose status/resume, not `--json`. Optional `resume --budget` caps in-flight cards at 5 with count line; `resume --json` same closed schema as status; display-only, never exec `next_verb`. FAIL/PASS/Never: SKILL.md STOP + Dispatch. |
14
14
  | `/flow next` | `bash <skill>/runner/flow.sh next` | After PASS, compare to `gate-examples.md` (not a second always-on load). FAIL/Never: SKILL.md STOP + Dispatch. |
15
15
  | `/flow assess` | `bash <skill>/runner/flow.sh assess` | Fill `flow/00-inspect.md` from EVIDENCE; Brownfield challenge in `gate-rules.md`. |
16
16
  | `/flow card` | `bash <skill>/runner/flow.sh card` | Fill per `law/CLAUDE.md`; before coding, `law/CODING.md`. |
@@ -7,14 +7,14 @@ brownfield-assess existing-codebase-no-flow-history assess brownfield current-st
7
7
  kill-doubt-idea stage-00-or-01 status offers the forge-idea ritual (references/forge-idea.md) at Idea/Scope: persona-driven interrogation until it hardens, proves out, or dies cheaply - flow
8
8
  review-ask cards-built-pending-review check card review path: diff-vs-scope, allowed-files drift, contract shapes, evidence - flow
9
9
  deploy-ask review-passed status flow has no deploy verb; status shows the Deploy stage; execution stays operator/CI - flow
10
- retro-ask stage-verify-or-later retro runs the native numeric-retro ritual first (git-log recipes), then offers the operator the line retro flow
10
+ retro-ask stage-verify-or-later retro runs the native numeric-retro ritual first (git-log recipes), then offers the operator the line retro|ak:retro flow
11
11
  usage-metrics-ask any usage cycle-time, gate fail-rate, per-stage dwell, command breakdown - flow
12
12
  parallel-multi-agent-ask any ready buildable + parallel-safety hint before offering workspace add - flow
13
13
  help-confused any status ground truth first, then explain the gate concept in one plain sentence - flow
14
14
  card-create-ask all-planning-gates-passed card create next build card; reminds Scope/Allowed-files/Verify/Done-evidence - flow
15
- adr-decision-ask stage-04 next offers the native persona-debate ritual before locking a non-trivial ADR decision ck-predict flow
16
- contract-hardening-ask stage-05 contract offers the native edge-case decomposition ritual to harden the seam before the Contract gate ck-scenario flow
17
- security-review-ask security-class-card check runs the native STRIDE ritual on every security-class card (guaranteed baseline) ck-security flow
18
- loop-fix-ask build-verify-numeric-gap status offers the native loop protocol (flow.sh loop-prep/loop-log) when a fix needs more than one attempt against a numeric target ck-loop flow
15
+ adr-decision-ask stage-04 next offers the native persona-debate ritual before locking a non-trivial ADR decision ck-predict|ak:predict flow
16
+ contract-hardening-ask stage-05 contract offers the native edge-case decomposition ritual to harden the seam before the Contract gate ck-scenario|ak:scenario flow
17
+ security-review-ask security-class-card check runs the native STRIDE ritual on every security-class card (guaranteed baseline) ck-security|ak:security flow
18
+ loop-fix-ask build-verify-numeric-gap status offers the native loop protocol (flow.sh loop-prep/loop-log) when a fix needs more than one attempt against a numeric target ck-loop|ak:loop flow
19
19
  open-decision-ask stage-02-or-03-or-05 clarify lists ## Open decisions bullets; skill offers references/clarify.md write-back (opt-in, never a next prereq) - flow
20
20
  close-the-gap-ask cards-done-verify-plan converge assess present code vs plan per references/converge.md, then append-only remainder cards (transactional; CONVERGED writes nothing) - flow
@@ -8,5 +8,5 @@ NOT-doing list honest about what's deferred?
8
8
  debate (architect/security/ops/user-advocate/cost) that surfaces defects while reversal
9
9
  is still cheap. Output INFORMS this challenge; it never passes the gate. Skip on a
10
10
  trivial ADR.
11
- - **If `ck-predict` is installed**, it is a richer alternative to the native ritual (same
12
- INFORMS-only rule, opt-in-with-prompt — see `claudekit-skills.md`).
11
+ - **If `ck-predict` or `ak:predict` is installed**, it is a richer alternative to the native ritual (same
12
+ INFORMS-only rule, opt-in-with-prompt — see `claudekit-skills.md` Name resolution).
@@ -28,6 +28,6 @@ cli=command+flags+output/exit, library=public function+args+return, skill=comman
28
28
  no-drift check, so the contract is exhaustive before any card trusts it. Complements
29
29
  `/flow consistency` (it *generates* cases; consistency checks *coherence*). INFORMS
30
30
  the gate; never auto-passes it.
31
- - **If `ck-scenario` is installed**, it is a richer 12-dimension alternative to the
31
+ - **If `ck-scenario` or `ak:scenario` is installed**, it is a richer 12-dimension alternative to the
32
32
  native ritual (same INFORMS-only rule, opt-in-with-prompt — see
33
- `claudekit-skills.md`).
33
+ `claudekit-skills.md` Name resolution).
@@ -127,7 +127,7 @@ Display-only: it reports what to run next but never executes `next_verb`.
127
127
  **Scope note (not a stability promise).** The elements above are parseable by external
128
128
  orchestrators; parse only these, never ad-hoc prose. This documents shipped
129
129
  behavior as of the current flow version (`version` in `skills/flow/SKILL.md`
130
- — currently 0.33.0 — surfaced as `flow_version` in telemetry). The project
130
+ — currently 0.34.0 — surfaced as `flow_version` in telemetry). The project
131
131
  has not adopted a formal compatibility guarantee: when upgrading flow,
132
132
  re-diff this contract against the runner (`cmd_resume`, `inflight_display`,
133
133
  `_log_event`) before relying on it.
@@ -6,12 +6,12 @@ maintenance. Each was written fresh from public/generic patterns (persona-panel
6
6
  generic edge-case taxonomy, STRIDE — public Microsoft SDL methodology, git-log
7
7
  retrospection, iterate-to-numeric-target loops, evidence-backed harness improvement) —
8
8
  none of this text is copied from claudekit-engineer (proprietary, All Rights Reserved)
9
- or any other kit. Where a matching ck skill is installed, it is offered as a **richer
9
+ or any other kit. Where a matching ck or ak skill is installed, it is offered as a **richer
10
10
  alternative**, never a requirement — see the seam files (`gate-rules.md`,
11
11
  `adversarial-review.md`, `law/RETRO.md`) for the native-first wiring, and
12
- `claudekit-skills.md` for the optional-enrichment annex.
12
+ `claudekit-skills.md` for the optional-enrichment annex (Name resolution).
13
13
 
14
- Every ritual below follows the same rule as the ck skills it stands in for: it
14
+ Every ritual below follows the same rule as the ck/ak skills it stands in for: it
15
15
  **informs** the gate; the gate (the `flow.sh` exit code + the semantic challenge) still
16
16
  judges. A ritual "looks good" is not a PASS.
17
17
 
@@ -0,0 +1,5 @@
1
+ PIN v1
2
+ Never FLOW_FORCE a live session. Mechanical FAIL -> STOP.
3
+ Security-class skip/debt -> HALT until the operator accepts in DEBT.md.
4
+ Never mark a card done without pasted world-state evidence.
5
+ NEXT_VERB is advisory; never auto-exec next, card, card-start, check, fix-gate, auto, or skip.
@@ -1032,6 +1032,7 @@ cmd_resume() {
1032
1032
  _na="$(_next_action)"
1033
1033
  echo "nothing to resume - $_na"
1034
1034
  echo "NEXT_VERB=$(_next_verb_from "$_na")"
1035
+ _emit_pin
1035
1036
  return 0
1036
1037
  fi
1037
1038
 
@@ -1388,6 +1389,18 @@ _emit_next() {
1388
1389
  a="$(_next_action)"
1389
1390
  echo "NEXT -> $a"
1390
1391
  echo "NEXT_VERB=$(_next_verb_from "$a")"
1392
+ _emit_pin
1393
+ }
1394
+
1395
+ # Verbatim PIN v1 from references/pin-v1.txt. Display-only; never a capability token.
1396
+ # Missing file: fail-loud on stderr. JSON path must not call this.
1397
+ _emit_pin() {
1398
+ local f="$SCRIPT_DIR/../references/pin-v1.txt"
1399
+ if [ ! -f "$f" ]; then
1400
+ echo "FAIL: PIN file missing: $f" >&2
1401
+ return 1
1402
+ fi
1403
+ tr -d '\r' < "$f"
1391
1404
  }
1392
1405
 
1393
1406
  # PTC-aligned load hint for JSON status/resume. Display-only — never a capability token.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "source": "../skills/flow",
3
3
  "destRelative": "skills/flow",
4
- "fileCount": 119,
5
- "syncedAt": "2026-10-11T14:30:13.050Z",
4
+ "fileCount": 120,
5
+ "syncedAt": "2026-10-12T04:29:07.162Z",
6
6
  "fileList": [
7
7
  "SKILL.md",
8
8
  "_templates/00-idea.md",
@@ -117,6 +117,7 @@
117
117
  "references/loop-harness-2026-principles.md",
118
118
  "references/mode-work.md",
119
119
  "references/native-rituals.md",
120
+ "references/pin-v1.txt",
120
121
  "references/project-types.md",
121
122
  "references/stage-state-machine.md",
122
123
  "references/ui-patterns-tcr.md",