incitaciones 0.10.5 โ†’ 0.11.1

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/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Incitaciones ๐Ÿค–
2
2
 
3
+ > **Why:** agent prompts rot โ€” they accumulate metadata sections, stale claims,
4
+ > and untraceable provenance. incitaciones keeps every prompt twice: a full
5
+ > source (frontmatter, tags, status, provenance) and a structurally validated
6
+ > distilled runtime file, gated end-to-end by `just ci`.
7
+ > **Status:** [experimental](docs/src/status.md) ยท corpus + export tooling evolving ยท [Motivation & design](docs/src/index.md) ยท [charly-vibes Tool Ecosystem](https://charly-vibes.github.io/dulce-de-leche/ecosystem-map.html)
3
8
  [![npm](https://img.shields.io/npm/v/incitaciones)](https://www.npmjs.com/package/incitaciones)
4
9
  [![Publish to npm](https://github.com/charly-vibes/incitaciones/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/charly-vibes/incitaciones/actions/workflows/npm-publish.yml)
5
10
 
@@ -504,7 +509,7 @@ The prompts are tool-agnostic where possible, with tool-specific variations note
504
509
 
505
510
  ## License
506
511
 
507
- [To be determined]
512
+ The prompts and skills in this repository are licensed under [CC-BY-4.0](LICENSE) (Attribution 4.0 International). You are free to use, share, and adapt them with attribution.
508
513
 
509
514
  ## Related Projects
510
515
 
@@ -17,7 +17,7 @@ Review any intellectual artifact (code, plans, research, issues, specs, document
17
17
  - **Progressive Build:** Each stage must build on previous findings.
18
18
  - **Specificity:** Reference exact locations (file:line, section, paragraph).
19
19
  - **Actionability:** Suggest specific solutions, don't just identify problems.
20
- - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence.
20
+ - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence. If the `TYPESAFE_API_KEY` environment variable is set, apply `references/typesafe-verification.md` in place of self-reported validation. If it is not set (or the API fails), mark findings `UNVERIFIED`, print the banner defined there, and proceed with self-reported validation.
21
21
  - **Early Stop:** Stop if convergence criteria are met before Stage 5.
22
22
 
23
23
  ## References
@@ -0,0 +1,86 @@
1
+ # TypeSafe Verification Pass (conditional)
2
+
3
+ Use this procedure **only** when the `TYPESAFE_API_KEY` environment variable is set.
4
+ When it is not set, or the API call fails (see Failure Handling), mark every finding
5
+ `UNVERIFIED`, print the banner below, and fall back to self-reported validation โ€”
6
+ do not block the review.
7
+
8
+ ```
9
+ BANNER: Findings NOT verified by TypeSafe (API unavailable or key absent).
10
+ Self-reported validation in effect; treat false-positive estimates as unmeasured.
11
+ ```
12
+
13
+ Use this procedure as-is; consult the `typesafe-ai` skill or docs.typesafe.ai only
14
+ for SDK-language bindings beyond the HTTP call specified here. Do not re-derive
15
+ questions, thresholds, or request shape at review time.
16
+
17
+ ## Constants (edit here, not inline)
18
+
19
+ | Constant | Value | Notes |
20
+ | --- | --- | --- |
21
+ | Endpoint | `https://api.typesafe.ai/v1/systemone` | `POST`, Bearer auth |
22
+ | Model | `jev-latest` | TypeSafe flagship alias |
23
+ | `CONFIDENCE_GATE` | `0.8` | Tunable starting point; calibrate per workflow. Below gate โ†’ human review |
24
+ | `VERIFY_SEVERITIES` | `CRITICAL, HIGH` | Cost cap: MEDIUM/LOW findings stay UNVERIFIED |
25
+ | Batching | one request | All verification questions in a single parallel call |
26
+
27
+ ## Stage A โ€” Mechanical pre-gate (no API)
28
+
29
+ For each finding at or above `VERIFY_SEVERITIES`, check mechanically:
30
+
31
+ 1. Does the referenced location exist (file:line, section, paragraph)?
32
+ 2. Does any quoted evidence appear verbatim in the artifact under review?
33
+
34
+ - Both pass โ†’ send to Stage B.
35
+ - Location missing or quote absent โ†’ verdict `fabricated` **without an API call**
36
+ (this is a CRITICAL meta-finding about the reviewer, not the artifact).
37
+ - No quoted evidence to check โ†’ send to Stage B anyway; the model judges context.
38
+
39
+ ## Stage B โ€” One parallel verification request
40
+
41
+ `state` = the artifact text plus the surviving findings (id, location, claim,
42
+ evidence). Ask **one Choice question per finding**, all in the same request:
43
+
44
+ ```json
45
+ {
46
+ "model": "jev-latest",
47
+ "state": { "artifact": "...", "findings": [ { "id": "CORR-001", "location": "...", "claim": "...", "evidence": "..." } ] },
48
+ "questions": {
49
+ "verify_CORR-001": {
50
+ "type": "choice",
51
+ "instructions": {
52
+ "finding": "`findings[0]`",
53
+ "question": "Does the `artifact` at the location named in `finding` contain evidence that supports `finding.claim`?"
54
+ },
55
+ "criteria": {
56
+ "verified": "The cited location contains evidence supporting the claim",
57
+ "unsupported": "The location exists but says nothing about the claim",
58
+ "contradicted": "The location's context says the opposite of the claim",
59
+ "fabricated": "The claim misrepresents what the location says"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ Generate one `verify_<ID>` question per finding. Never ask about multiple findings
67
+ in one question.
68
+
69
+ ## Stage C โ€” Verdict mapping
70
+
71
+ | Verdict | Action |
72
+ | --- | --- |
73
+ | `verified`, confidence โ‰ฅ gate | Finding stands; counts toward convergence |
74
+ | `unsupported` or `contradicted` | Drop the finding; it counts as a **measured** false positive |
75
+ | `fabricated` (Stage A or B) | Drop; file CRITICAL meta-finding `[META-<n>]` against the review pass |
76
+ | Any verdict with confidence < `CONFIDENCE_GATE` | Keep finding, mark `REVIEW_REQUIRED`, route to `ESCALATE_TO_HUMAN` |
77
+ | Findings below `VERIFY_SEVERITIES` | Mark `UNVERIFIED`; excluded from FP-rate arithmetic |
78
+
79
+ Convergence arithmetic (in `criteria.md`) uses these measured numbers:
80
+
81
+ ```
82
+ False positive rate = dropped findings / (verified + dropped findings)
83
+ ```
84
+
85
+ This replaces the self-estimated false-positive rate. Self-estimated rates are
86
+ insufficient as a sole gate but remain one input alongside other convergence criteria.
@@ -1,37 +1,20 @@
1
- # Whisper โ€” Deterministic Operational Knowledge
1
+ # Whisper โ€” knowledge workspace (pointer)
2
2
 
3
- > **This skill is a thin pointer.** The canonical, versioned copy ships with
4
- > the `turu` CLI ([charly-vibes/whisper](https://github.com/charly-vibes/whisper),
5
- > `cargo install whisper-vibes`) โ€” install it with `turu skill install`.
6
- > This file stays so agents without the binary have fallbacks.
3
+ The canonical, versioned procedure lives in the **turu skill pack** โ€”
4
+ installed with `turu skill install` and shipped with the `turu` CLI
5
+ ([charly-vibes/whisper](https://github.com/charly-vibes/whisper),
6
+ `cargo install whisper-vibes`).
7
7
 
8
- The `turu` CLI owns every mechanical step: canonical repo keys, branch slugs,
9
- worktree slots, and scope routing. Same inputs, same outputs โ€” no more
10
- hand-rolled shell pipelines.
8
+ ## Routing rule
11
9
 
12
- ## Decision procedure
13
-
14
- 1. **Is `turu` available?** Run `turu key --json`.
15
- 2. **If yes** โ€” everything mechanical is a turu command:
16
-
17
- | Intent | Command |
18
- |---|---|
19
- | Derive repo key / branch slug / worktree slot | `turu key --json` |
20
- | Find the write destination for a scope | `turu resolve <scope> --json` |
21
- | Record knowledge (extend, don't duplicate) | `turu append <scope> --text "..."` |
22
- | Create the workspace layout | `turu init --json` |
23
- | Inspect paths and existence | `turu status --json` |
24
- | Validate / detect legacy keys | `turu check --json` ยท `turu doctor --json` |
25
- | Refresh the AGENTS.md routing block | `turu sync --json` |
26
-
27
- Scopes: `global` (rules.md), `repo` (env.md), `branch` (notes.md),
28
- `worktree` (env.md), `group` (shared workspace for a set of repos).
29
- If a `<!-- TURU:START -->` block exists in `AGENTS.md`, read the routing
30
- map from there instead of re-deriving paths.
31
-
32
- 3. **If no** โ€” use the manual fallbacks in `references/` (they remain the
33
- source of truth for the shell-snippet procedures) and suggest
34
- `cargo install whisper-vibes`.
10
+ - **If `whisper.md` sits next to this file** (the installed pack), read it and follow it as your single source of procedure. It owns everything: the session loop (`turu recall all`
11
+ at start, `turu append <scope> "..."` at capture), scope routing
12
+ (global โ†’ group โ†’ repo โ†’ branch โ†’ worktree), the command table, and all
13
+ modes. This pointer defers entirely and adds nothing โ€” never reconcile
14
+ the two by hand.
15
+ - **If the pack is absent**, `turu` is not installed: use the manual
16
+ fallbacks in `references/` (source of truth for the shell-snippet
17
+ procedures) and suggest `cargo install whisper-vibes`.
35
18
 
36
19
  ## Invariants (with or without the binary)
37
20
 
@@ -41,15 +24,4 @@ hand-rolled shell pipelines.
41
24
  than creating a new one that says the same thing.
42
25
  - **One repo, one key.** The canonical key is a pure function of the remote
43
26
  URL; never invent a variant.
44
- - **Search first.** Before creating a new entry, check if one exists.
45
-
46
- ## Modes
47
-
48
- `/w init` โ†’ `turu init` ยท `/w` or `/w status` โ†’ `turu status` ยท
49
- `/w check` โ†’ `turu check` ยท `/w link` โ†’ `subs/link-manual` (no CLI verb yet)
50
- ยท `/w decommission` โ†’ `subs/decommission-manual` ยท `/w consolidate` โ†’
51
- `subs/consolidate-manual` (detection ships via `turu doctor`).
52
-
53
- Manual procedures for each mode: `references/init.md`, `references/check.md`,
54
- `references/status.md`, `references/link.md`, `references/decommission.md`,
55
- `references/consolidate.md`.
27
+ - **Search first.** Before creating a new entry, check if one exists.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026-09-28",
2
+ "version": "2026-09-30",
3
3
  "schema_version": "1.1",
4
4
  "prompts": [
5
5
  {
@@ -1465,7 +1465,7 @@
1465
1465
  "name": "whisper",
1466
1466
  "type": "workflow",
1467
1467
  "title": "Whisper โ€” Accumulated Operational Knowledge",
1468
- "description": "Knowledge workspace management: init, check, status, link plan, decommission, routing. Delegates to the turu CLI when installed.",
1468
+ "description": "Deterministic knowledge workspace: session loop (recall all / append), scope routing, distill, bundle. Delegates to the turu CLI when installed; manual fallbacks otherwise.",
1469
1469
  "source": "content/prompt-workflow-whisper.md",
1470
1470
  "distilled": "content/distilled/whisper/SKILL.md",
1471
1471
  "skill_format": "progressive-disclosure",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incitaciones",
3
- "version": "0.10.5",
3
+ "version": "0.11.1",
4
4
  "description": "Reusable prompts and skills for CLI LLM tools, with native pi package support.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,7 +10,7 @@
10
10
  "bugs": {
11
11
  "url": "https://github.com/charly-vibes/incitaciones/issues"
12
12
  },
13
- "license": "MIT",
13
+ "license": "CC-BY-4.0",
14
14
  "type": "module",
15
15
  "keywords": [
16
16
  "pi-package",
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Shortcut for the whisper skill. Knowledge workspace management: init, check, status, link plan, decommission, routing. Delegates to the turu CLI when installed."
2
+ description: "Shortcut for the whisper skill. Deterministic knowledge workspace: session loop (recall all / append), scope routing, distill, bundle. Delegates to the turu CLI when installed; manual fallbacks otherwise."
3
3
  ---
4
4
  <!-- installed-from: incitaciones -->
5
5
 
@@ -17,7 +17,7 @@ Review any intellectual artifact (code, plans, research, issues, specs, document
17
17
  - **Progressive Build:** Each stage must build on previous findings.
18
18
  - **Specificity:** Reference exact locations (file:line, section, paragraph).
19
19
  - **Actionability:** Suggest specific solutions, don't just identify problems.
20
- - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence.
20
+ - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence. If the `TYPESAFE_API_KEY` environment variable is set, apply `references/typesafe-verification.md` in place of self-reported validation. If it is not set (or the API fails), mark findings `UNVERIFIED`, print the banner defined there, and proceed with self-reported validation.
21
21
  - **Early Stop:** Stop if convergence criteria are met before Stage 5.
22
22
 
23
23
  ## References
@@ -0,0 +1,86 @@
1
+ # TypeSafe Verification Pass (conditional)
2
+
3
+ Use this procedure **only** when the `TYPESAFE_API_KEY` environment variable is set.
4
+ When it is not set, or the API call fails (see Failure Handling), mark every finding
5
+ `UNVERIFIED`, print the banner below, and fall back to self-reported validation โ€”
6
+ do not block the review.
7
+
8
+ ```
9
+ BANNER: Findings NOT verified by TypeSafe (API unavailable or key absent).
10
+ Self-reported validation in effect; treat false-positive estimates as unmeasured.
11
+ ```
12
+
13
+ Use this procedure as-is; consult the `typesafe-ai` skill or docs.typesafe.ai only
14
+ for SDK-language bindings beyond the HTTP call specified here. Do not re-derive
15
+ questions, thresholds, or request shape at review time.
16
+
17
+ ## Constants (edit here, not inline)
18
+
19
+ | Constant | Value | Notes |
20
+ | --- | --- | --- |
21
+ | Endpoint | `https://api.typesafe.ai/v1/systemone` | `POST`, Bearer auth |
22
+ | Model | `jev-latest` | TypeSafe flagship alias |
23
+ | `CONFIDENCE_GATE` | `0.8` | Tunable starting point; calibrate per workflow. Below gate โ†’ human review |
24
+ | `VERIFY_SEVERITIES` | `CRITICAL, HIGH` | Cost cap: MEDIUM/LOW findings stay UNVERIFIED |
25
+ | Batching | one request | All verification questions in a single parallel call |
26
+
27
+ ## Stage A โ€” Mechanical pre-gate (no API)
28
+
29
+ For each finding at or above `VERIFY_SEVERITIES`, check mechanically:
30
+
31
+ 1. Does the referenced location exist (file:line, section, paragraph)?
32
+ 2. Does any quoted evidence appear verbatim in the artifact under review?
33
+
34
+ - Both pass โ†’ send to Stage B.
35
+ - Location missing or quote absent โ†’ verdict `fabricated` **without an API call**
36
+ (this is a CRITICAL meta-finding about the reviewer, not the artifact).
37
+ - No quoted evidence to check โ†’ send to Stage B anyway; the model judges context.
38
+
39
+ ## Stage B โ€” One parallel verification request
40
+
41
+ `state` = the artifact text plus the surviving findings (id, location, claim,
42
+ evidence). Ask **one Choice question per finding**, all in the same request:
43
+
44
+ ```json
45
+ {
46
+ "model": "jev-latest",
47
+ "state": { "artifact": "...", "findings": [ { "id": "CORR-001", "location": "...", "claim": "...", "evidence": "..." } ] },
48
+ "questions": {
49
+ "verify_CORR-001": {
50
+ "type": "choice",
51
+ "instructions": {
52
+ "finding": "`findings[0]`",
53
+ "question": "Does the `artifact` at the location named in `finding` contain evidence that supports `finding.claim`?"
54
+ },
55
+ "criteria": {
56
+ "verified": "The cited location contains evidence supporting the claim",
57
+ "unsupported": "The location exists but says nothing about the claim",
58
+ "contradicted": "The location's context says the opposite of the claim",
59
+ "fabricated": "The claim misrepresents what the location says"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ Generate one `verify_<ID>` question per finding. Never ask about multiple findings
67
+ in one question.
68
+
69
+ ## Stage C โ€” Verdict mapping
70
+
71
+ | Verdict | Action |
72
+ | --- | --- |
73
+ | `verified`, confidence โ‰ฅ gate | Finding stands; counts toward convergence |
74
+ | `unsupported` or `contradicted` | Drop the finding; it counts as a **measured** false positive |
75
+ | `fabricated` (Stage A or B) | Drop; file CRITICAL meta-finding `[META-<n>]` against the review pass |
76
+ | Any verdict with confidence < `CONFIDENCE_GATE` | Keep finding, mark `REVIEW_REQUIRED`, route to `ESCALATE_TO_HUMAN` |
77
+ | Findings below `VERIFY_SEVERITIES` | Mark `UNVERIFIED`; excluded from FP-rate arithmetic |
78
+
79
+ Convergence arithmetic (in `criteria.md`) uses these measured numbers:
80
+
81
+ ```
82
+ False positive rate = dropped findings / (verified + dropped findings)
83
+ ```
84
+
85
+ This replaces the self-estimated false-positive rate. Self-estimated rates are
86
+ insufficient as a sole gate but remain one input alongside other convergence criteria.
@@ -31,7 +31,7 @@ Review any intellectual artifact (code, plans, research, issues, specs, document
31
31
  - **Progressive Build:** Each stage must build on previous findings.
32
32
  - **Specificity:** Reference exact locations (file:line, section, paragraph).
33
33
  - **Actionability:** Suggest specific solutions, don't just identify problems.
34
- - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence.
34
+ - **Validation:** Confirm issues exist; do not flag "potential" issues without evidence. If the `TYPESAFE_API_KEY` environment variable is set, apply `references/typesafe-verification.md` in place of self-reported validation. If it is not set (or the API fails), mark findings `UNVERIFIED`, print the banner defined there, and proceed with self-reported validation.
35
35
  - **Early Stop:** Stop if convergence criteria are met before Stage 5.
36
36
 
37
37
  ## References
@@ -292,3 +292,94 @@ Total Issues by Severity:
292
292
 
293
293
  **Rationale:** [1-2 sentences explaining the verdict]
294
294
  ```
295
+
296
+ ---
297
+
298
+ #### Reference: references/typesafe-verification.md
299
+
300
+ # TypeSafe Verification Pass (conditional)
301
+
302
+ Use this procedure **only** when the `TYPESAFE_API_KEY` environment variable is set.
303
+ When it is not set, or the API call fails (see Failure Handling), mark every finding
304
+ `UNVERIFIED`, print the banner below, and fall back to self-reported validation โ€”
305
+ do not block the review.
306
+
307
+ ```
308
+ BANNER: Findings NOT verified by TypeSafe (API unavailable or key absent).
309
+ Self-reported validation in effect; treat false-positive estimates as unmeasured.
310
+ ```
311
+
312
+ Use this procedure as-is; consult the `typesafe-ai` skill or docs.typesafe.ai only
313
+ for SDK-language bindings beyond the HTTP call specified here. Do not re-derive
314
+ questions, thresholds, or request shape at review time.
315
+
316
+ ## Constants (edit here, not inline)
317
+
318
+ | Constant | Value | Notes |
319
+ | --- | --- | --- |
320
+ | Endpoint | `https://api.typesafe.ai/v1/systemone` | `POST`, Bearer auth |
321
+ | Model | `jev-latest` | TypeSafe flagship alias |
322
+ | `CONFIDENCE_GATE` | `0.8` | Tunable starting point; calibrate per workflow. Below gate โ†’ human review |
323
+ | `VERIFY_SEVERITIES` | `CRITICAL, HIGH` | Cost cap: MEDIUM/LOW findings stay UNVERIFIED |
324
+ | Batching | one request | All verification questions in a single parallel call |
325
+
326
+ ## Stage A โ€” Mechanical pre-gate (no API)
327
+
328
+ For each finding at or above `VERIFY_SEVERITIES`, check mechanically:
329
+
330
+ 1. Does the referenced location exist (file:line, section, paragraph)?
331
+ 2. Does any quoted evidence appear verbatim in the artifact under review?
332
+
333
+ - Both pass โ†’ send to Stage B.
334
+ - Location missing or quote absent โ†’ verdict `fabricated` **without an API call**
335
+ (this is a CRITICAL meta-finding about the reviewer, not the artifact).
336
+ - No quoted evidence to check โ†’ send to Stage B anyway; the model judges context.
337
+
338
+ ## Stage B โ€” One parallel verification request
339
+
340
+ `state` = the artifact text plus the surviving findings (id, location, claim,
341
+ evidence). Ask **one Choice question per finding**, all in the same request:
342
+
343
+ ```json
344
+ {
345
+ "model": "jev-latest",
346
+ "state": { "artifact": "...", "findings": [ { "id": "CORR-001", "location": "...", "claim": "...", "evidence": "..." } ] },
347
+ "questions": {
348
+ "verify_CORR-001": {
349
+ "type": "choice",
350
+ "instructions": {
351
+ "finding": "`findings[0]`",
352
+ "question": "Does the `artifact` at the location named in `finding` contain evidence that supports `finding.claim`?"
353
+ },
354
+ "criteria": {
355
+ "verified": "The cited location contains evidence supporting the claim",
356
+ "unsupported": "The location exists but says nothing about the claim",
357
+ "contradicted": "The location's context says the opposite of the claim",
358
+ "fabricated": "The claim misrepresents what the location says"
359
+ }
360
+ }
361
+ }
362
+ }
363
+ ```
364
+
365
+ Generate one `verify_<ID>` question per finding. Never ask about multiple findings
366
+ in one question.
367
+
368
+ ## Stage C โ€” Verdict mapping
369
+
370
+ | Verdict | Action |
371
+ | --- | --- |
372
+ | `verified`, confidence โ‰ฅ gate | Finding stands; counts toward convergence |
373
+ | `unsupported` or `contradicted` | Drop the finding; it counts as a **measured** false positive |
374
+ | `fabricated` (Stage A or B) | Drop; file CRITICAL meta-finding `[META-<n>]` against the review pass |
375
+ | Any verdict with confidence < `CONFIDENCE_GATE` | Keep finding, mark `REVIEW_REQUIRED`, route to `ESCALATE_TO_HUMAN` |
376
+ | Findings below `VERIFY_SEVERITIES` | Mark `UNVERIFIED`; excluded from FP-rate arithmetic |
377
+
378
+ Convergence arithmetic (in `criteria.md`) uses these measured numbers:
379
+
380
+ ```
381
+ False positive rate = dropped findings / (verified + dropped findings)
382
+ ```
383
+
384
+ This replaces the self-estimated false-positive rate. Self-estimated rates are
385
+ insufficient as a sole gate but remain one input alongside other convergence criteria.
@@ -1,44 +1,27 @@
1
1
  ---
2
2
  name: whisper
3
- description: "Knowledge workspace management: init, check, status, link plan, decommission, routing. Delegates to the turu CLI when installed."
3
+ description: "Deterministic knowledge workspace: session loop (recall all / append), scope routing, distill, bundle. Delegates to the turu CLI when installed; manual fallbacks otherwise."
4
4
  metadata:
5
5
  installed-from: "incitaciones"
6
6
  disable-model-invocation: true
7
7
  ---
8
- # Whisper โ€” Deterministic Operational Knowledge
8
+ # Whisper โ€” knowledge workspace (pointer)
9
9
 
10
- > **This skill is a thin pointer.** The canonical, versioned copy ships with
11
- > the `turu` CLI ([charly-vibes/whisper](https://github.com/charly-vibes/whisper),
12
- > `cargo install whisper-vibes`) โ€” install it with `turu skill install`.
13
- > This file stays so agents without the binary have fallbacks.
10
+ The canonical, versioned procedure lives in the **turu skill pack** โ€”
11
+ installed with `turu skill install` and shipped with the `turu` CLI
12
+ ([charly-vibes/whisper](https://github.com/charly-vibes/whisper),
13
+ `cargo install whisper-vibes`).
14
14
 
15
- The `turu` CLI owns every mechanical step: canonical repo keys, branch slugs,
16
- worktree slots, and scope routing. Same inputs, same outputs โ€” no more
17
- hand-rolled shell pipelines.
15
+ ## Routing rule
18
16
 
19
- ## Decision procedure
20
-
21
- 1. **Is `turu` available?** Run `turu key --json`.
22
- 2. **If yes** โ€” everything mechanical is a turu command:
23
-
24
- | Intent | Command |
25
- |---|---|
26
- | Derive repo key / branch slug / worktree slot | `turu key --json` |
27
- | Find the write destination for a scope | `turu resolve <scope> --json` |
28
- | Record knowledge (extend, don't duplicate) | `turu append <scope> --text "..."` |
29
- | Create the workspace layout | `turu init --json` |
30
- | Inspect paths and existence | `turu status --json` |
31
- | Validate / detect legacy keys | `turu check --json` ยท `turu doctor --json` |
32
- | Refresh the AGENTS.md routing block | `turu sync --json` |
33
-
34
- Scopes: `global` (rules.md), `repo` (env.md), `branch` (notes.md),
35
- `worktree` (env.md), `group` (shared workspace for a set of repos).
36
- If a `<!-- TURU:START -->` block exists in `AGENTS.md`, read the routing
37
- map from there instead of re-deriving paths.
38
-
39
- 3. **If no** โ€” use the manual fallbacks in `references/` (they remain the
40
- source of truth for the shell-snippet procedures) and suggest
41
- `cargo install whisper-vibes`.
17
+ - **If `whisper.md` sits next to this file** (the installed pack), read it and follow it as your single source of procedure. It owns everything: the session loop (`turu recall all`
18
+ at start, `turu append <scope> "..."` at capture), scope routing
19
+ (global โ†’ group โ†’ repo โ†’ branch โ†’ worktree), the command table, and all
20
+ modes. This pointer defers entirely and adds nothing โ€” never reconcile
21
+ the two by hand.
22
+ - **If the pack is absent**, `turu` is not installed: use the manual
23
+ fallbacks in `references/` (source of truth for the shell-snippet
24
+ procedures) and suggest `cargo install whisper-vibes`.
42
25
 
43
26
  ## Invariants (with or without the binary)
44
27
 
@@ -48,15 +31,4 @@ hand-rolled shell pipelines.
48
31
  than creating a new one that says the same thing.
49
32
  - **One repo, one key.** The canonical key is a pure function of the remote
50
33
  URL; never invent a variant.
51
- - **Search first.** Before creating a new entry, check if one exists.
52
-
53
- ## Modes
54
-
55
- `/w init` โ†’ `turu init` ยท `/w` or `/w status` โ†’ `turu status` ยท
56
- `/w check` โ†’ `turu check` ยท `/w link` โ†’ `subs/link-manual` (no CLI verb yet)
57
- ยท `/w decommission` โ†’ `subs/decommission-manual` ยท `/w consolidate` โ†’
58
- `subs/consolidate-manual` (detection ships via `turu doctor`).
59
-
60
- Manual procedures for each mode: `references/init.md`, `references/check.md`,
61
- `references/status.md`, `references/link.md`, `references/decommission.md`,
62
- `references/consolidate.md`.
34
+ - **Search first.** Before creating a new entry, check if one exists.