@aperant/framework 0.12.1 → 0.13.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/CHANGELOG.md CHANGED
@@ -3,7 +3,38 @@
3
3
  All notable changes to `@aperant/framework` are documented here. See
4
4
  [`VERSIONING.md`](VERSIONING.md) for the per-tier contract.
5
5
 
6
- ## 0.12.1 — 2026-06-03Fix: `/apt` router honors per-track orchestration
6
+ ## 0.13.0 — 2026-06-06Catch-up panel fires on `/apt` + router passthrough policy
7
+
8
+ > Validated as `0.13.0-next.0` on the `next` tag, then promoted to `latest`.
9
+
10
+ ### Added
11
+
12
+ - **`passthrough_policy` skill frontmatter field** (`freetext` | `exact-only` |
13
+ `never`, optional, default `freetext`). Lets a skill declare whether a
14
+ first-word match triggers MODE: skill-passthrough or falls through to the
15
+ host-LLM `classify` path. Read like `task_context` / `default_track` (no
16
+ hardcoded slug list enters the router). The action-verb slugs `apt:triage`,
17
+ `apt:debug`, `apt:review`, `apt:improve` declare `exact-only`. See
18
+ [`docs/skill-passthrough.md`](docs/skill-passthrough.md).
19
+
20
+ ### Fixed
21
+
22
+ - **Catch-up panel never fired on `/apt`.** The panel + Last-Seen Marker were
23
+ gated on `isInteractiveTty()`, but the `/apt` skill invokes `apt-tools route`
24
+ via a captured, non-TTY subprocess, so the gate was always closed in
25
+ production (and the marker baseline was never written). The skill now passes
26
+ the explicit interactive signal `APT_FORCE_TTY=1` on its route call; spawned /
27
+ fan-out / background callers omit it (or set `APT_CATCH_UP_DISABLE=1`) so
28
+ nested calls stay strict no-ops. Adds a regression test exercising the real
29
+ non-TTY default condition + the two-call marker bootstrap.
30
+ - **Router first-word hijack of free-text that opens with an action verb.** A
31
+ sentence like "Triage the failing harness now" matched the bare first word
32
+ against `apt:triage` and dispatched skill-passthrough instead of classifying
33
+ the real (debugging) task. With `passthrough_policy: exact-only`, such slugs
34
+ passthrough only when the remainder is arg-shaped (empty / flags / paths /
35
+ numeric ids / short non-prose); a sentence falls through to `classify`, which
36
+ still carries the skill in the envelope so the host can re-select it
37
+ (self-healing). The `apt:review` PR-reference carve-out stays authoritative.
7
38
 
8
39
  ### Fixed
9
40
 
package/README.md CHANGED
@@ -76,6 +76,16 @@ Runtime command surfaces differ slightly:
76
76
  | **Framework** | `/apt:setup` | Change preferences (verification style, multi-model, parallelization, branching) |
77
77
  | **Framework** | `/apt:update` | Refresh installed skills / agents / hooks across every runtime |
78
78
 
79
+ ## Auto-spar plans
80
+
81
+ Have `/apt:run` challenge every plan with a second LLM before you approve. In `.aperant/config.local.json`:
82
+
83
+ ```json
84
+ { "spar": { "enabled": true, "partner": "codex" } }
85
+ ```
86
+
87
+ `partner` = `codex` | `claude` | `gemini` (not your current CLI). Fires after the plan stage (STANDARD) or plan + execute (DEEP); QUICK is exempt. Or run `/apt:setup` → Pipeline → Sparring Auto-Fire.
88
+
79
89
  ## License
80
90
 
81
91
  AGPL-3.0-only. See [LICENSE](LICENSE).
@@ -1,3 +1,25 @@
1
+ /**
2
+ * Pure, deterministic classifier (ID-04) for the remainder after a slug's first
3
+ * word, used by the `exact-only` passthrough policy. Returns true when the
4
+ * remainder is ARG-SHAPED (→ passthrough) and false when it is PROSE-SHAPED
5
+ * (→ fall through to the host-LLM classify path). No I/O.
6
+ *
7
+ * Arg-shaped iff:
8
+ * 1. empty (bare slug, e.g. `triage`), OR
9
+ * 2. EVERY whitespace token is flag-shaped (`--fix-all` / `-x`), path-shaped
10
+ * (contains `/`, `\`, or `.` → `src/foo.ts`), or numeric/id-shaped
11
+ * (`42` / `#7`), OR
12
+ * 3. it is a SHORT phrase (≤3 tokens) that does NOT read like a sentence:
13
+ * the leading token is NOT sentence-case (`/^[A-Z]/` and not an ALL-CAPS
14
+ * acronym) AND no token is an English function/stop word.
15
+ *
16
+ * Otherwise prose-shaped → false. See ID-04's case table + TD-03 for the
17
+ * pinned contract.
18
+ *
19
+ * @param {string} remainder the slug's trailing args, already trimmed/joined
20
+ * @returns {boolean} true → arg-shaped (passthrough); false → prose (classify)
21
+ */
22
+ export function isArgShapedRemainder(remainder: string): boolean;
1
23
  export function cmdRoute(projectDir: any, extraArgs: any): import("../util/result.mjs").CommandResult;
2
24
  /**
3
25
  * Build track-aware autonomy options. Extracted so both the flag-override
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"AAoRA,sGAqVC;AAED;;;GAGG;AACH;;;;;IAqGC"}
1
+ {"version":3,"file":"route.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"AA8SA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,gDAHW,MAAM,GACJ,OAAO,CA4BnB;AAwDD,sGAoXC;AAED;;;GAGG;AACH;;;;;IAqGC"}
@@ -96,12 +96,26 @@ function readUpdateCheckCache() {
96
96
  return null;
97
97
  }
98
98
  /**
99
- * Is this an interactive (TTY) apt call? The catch-up panel + Last-Seen Marker
100
- * are gated to interactive contexts (LD-02) exactly like the statusline
101
- * isTTY gate so spawned subagents, fan-out workers, and non-TTY/piped calls
102
- * are strict no-ops (they neither read nor write the marker). `APT_FORCE_TTY`
103
- * forces the gate open for tests; `APT_CATCH_UP_DISABLE` forces it closed so a
104
- * background spawner can opt every nested call out.
99
+ * Is this an interactive `/apt` call? The catch-up panel + Last-Seen Marker
100
+ * are gated to interactive contexts (LD-02) so spawned subagents, fan-out
101
+ * workers, and background/piped calls are strict no-ops (they neither read nor
102
+ * write the marker).
103
+ *
104
+ * The PRODUCTION trigger is the EXPLICIT interactive signal `APT_FORCE_TTY=1`,
105
+ * which the top-level `/apt` skill sets on its `apt-tools route` call
106
+ * (`skills/apt/SKILL.md`). The skill runs `route` via the Bash tool — a
107
+ * captured, non-TTY subprocess whose stdout/stderr are piped, never a PTY — so
108
+ * the `process.stdout/stderr.isTTY` sniff below is ALWAYS false on that path.
109
+ * The explicit signal is therefore the load-bearing opener; the isTTY sniff is
110
+ * only a SECONDARY fallback so a genuinely-interactive direct `apt-tools route`
111
+ * CLI call (a real terminal) still computes the panel.
112
+ *
113
+ * `APT_FORCE_TTY` does double duty: the test-override role AND the production
114
+ * interactive signal (no new env var — keeps the schema + opt-out unchanged).
115
+ * `APT_CATCH_UP_DISABLE` forces the gate closed so a background spawner can opt
116
+ * every nested call out (it wins over the signal). Spawned / fan-out / nested
117
+ * route calls deliberately set NEITHER (or set APT_CATCH_UP_DISABLE), so the
118
+ * panel never fires inside a sub-agent.
105
119
  */
106
120
  function isInteractiveTty() {
107
121
  if (process.env.APT_CATCH_UP_DISABLE === '1')
@@ -126,7 +140,7 @@ function isInteractiveTty() {
126
140
  * isInteractiveTty), so background/spawned calls never touch the marker.
127
141
  *
128
142
  * @param {string} targetDir
129
- * @returns {object|null} the catch_up panel, or null.
143
+ * @returns {{ welcome_back: object|null, team_digest: object|null }|null} the catch_up panel, or null.
130
144
  */
131
145
  function computeCatchUpForRoute(targetDir) {
132
146
  // Setup mirrors cmdCatchUp in commands/catch-up.mjs (recompute-only variant).
@@ -221,6 +235,115 @@ function normalizeAptInvocation(input) {
221
235
  * a word char, which would exclude the bare-hashtag case `review #7`.
222
236
  */
223
237
  const PR_REVIEW_SIGNAL = /(?:\bPR\s*#?\s*\d+|#\d+|\bpull\s*request\s*#?\s*\d+)\b/i;
238
+ /**
239
+ * English function/stop words used by `isArgShapedRemainder` (ID-04) to detect
240
+ * a prose-shaped remainder. Conservative on purpose: a remainder containing any
241
+ * of these reads like a sentence, so under `exact-only` it falls through to the
242
+ * host-LLM classify path instead of hijacking the slug. Hoisted to module scope
243
+ * (frozen) so the Set is built once at load time. Lowercase keys only — the
244
+ * helper lowercases tokens before lookup.
245
+ */
246
+ const PASSTHROUGH_STOP_WORDS = Object.freeze(new Set([
247
+ 'the',
248
+ 'a',
249
+ 'an',
250
+ 'is',
251
+ 'are',
252
+ 'was',
253
+ 'were',
254
+ 'be',
255
+ 'been',
256
+ 'keeps',
257
+ 'keep',
258
+ 'now',
259
+ 'please',
260
+ 'that',
261
+ 'this',
262
+ 'these',
263
+ 'those',
264
+ 'my',
265
+ 'our',
266
+ 'your',
267
+ 'their',
268
+ 'it',
269
+ 'its',
270
+ 'to',
271
+ 'of',
272
+ 'in',
273
+ 'on',
274
+ 'at',
275
+ 'for',
276
+ 'and',
277
+ 'but',
278
+ 'or',
279
+ 'so',
280
+ 'then',
281
+ 'when',
282
+ 'while',
283
+ 'because',
284
+ 'i',
285
+ 'we',
286
+ 'they',
287
+ 'you',
288
+ 'fails',
289
+ 'failing',
290
+ 'failed',
291
+ 'crashing',
292
+ 'crashed',
293
+ 'broken',
294
+ 'with',
295
+ 'from',
296
+ 'into',
297
+ ]));
298
+ /**
299
+ * Pure, deterministic classifier (ID-04) for the remainder after a slug's first
300
+ * word, used by the `exact-only` passthrough policy. Returns true when the
301
+ * remainder is ARG-SHAPED (→ passthrough) and false when it is PROSE-SHAPED
302
+ * (→ fall through to the host-LLM classify path). No I/O.
303
+ *
304
+ * Arg-shaped iff:
305
+ * 1. empty (bare slug, e.g. `triage`), OR
306
+ * 2. EVERY whitespace token is flag-shaped (`--fix-all` / `-x`), path-shaped
307
+ * (contains `/`, `\`, or `.` → `src/foo.ts`), or numeric/id-shaped
308
+ * (`42` / `#7`), OR
309
+ * 3. it is a SHORT phrase (≤3 tokens) that does NOT read like a sentence:
310
+ * the leading token is NOT sentence-case (`/^[A-Z]/` and not an ALL-CAPS
311
+ * acronym) AND no token is an English function/stop word.
312
+ *
313
+ * Otherwise prose-shaped → false. See ID-04's case table + TD-03 for the
314
+ * pinned contract.
315
+ *
316
+ * @param {string} remainder the slug's trailing args, already trimmed/joined
317
+ * @returns {boolean} true → arg-shaped (passthrough); false → prose (classify)
318
+ */
319
+ export function isArgShapedRemainder(remainder) {
320
+ const trimmed = typeof remainder === 'string' ? remainder.trim() : '';
321
+ // 1. Empty / bare slug.
322
+ if (trimmed === '')
323
+ return true;
324
+ const tokens = trimmed.split(/\s+/);
325
+ const isFlag = (t) => /^--?[\w-]+$/.test(t);
326
+ const isPath = (t) => /[/\\.]/.test(t);
327
+ const isNumericId = (t) => /^#?\d+$/.test(t);
328
+ // 2. Every token is flag / path / numeric-id shaped.
329
+ if (tokens.every((t) => isFlag(t) || isPath(t) || isNumericId(t)))
330
+ return true;
331
+ // 3. Short phrase (≤3 tokens) that does not read like a sentence.
332
+ if (tokens.length > 3)
333
+ return false;
334
+ const lead = tokens[0];
335
+ // Sentence-case leading token (Capitalized, not an ALL-CAPS acronym) reads
336
+ // like the start of a prose sentence.
337
+ const isAllCapsAcronym = /^[A-Z0-9]+$/.test(lead);
338
+ if (/^[A-Z]/.test(lead) && !isAllCapsAcronym)
339
+ return false;
340
+ // Any English function/stop word anywhere → prose.
341
+ for (const t of tokens) {
342
+ if (PASSTHROUGH_STOP_WORDS.has(t.toLowerCase()))
343
+ return false;
344
+ }
345
+ return true;
346
+ }
224
347
  /**
225
348
  * Canonical skill-slug index — reads every skill's agent_name and
226
349
  * spawns_agent flag from its frontmatter so the router doesn't carry a
@@ -237,7 +360,7 @@ const PR_REVIEW_SIGNAL = /(?:\bPR\s*#?\s*\d+|#\d+|\bpull\s*request\s*#?\s*\d+)\b
237
360
  * so this keeps the two paths consistent.
238
361
  *
239
362
  * @param {import('../route/skill-discover.mjs').DiscoveredSkill[]} skills
240
- * @returns {{ agentOf: (slug: string) => string|null, spawnsAgent: (slug: string) => boolean, taskContextOf: (slug: string) => string|null, defaultTrackOf: (slug: string) => string|null, knownSlugs: Set<string>, isUserInvocable: (slug: string) => boolean }}
363
+ * @returns {{ agentOf: (slug: string) => string|null, spawnsAgent: (slug: string) => boolean, taskContextOf: (slug: string) => string|null, defaultTrackOf: (slug: string) => string|null, passthroughPolicyOf: (slug: string) => 'freetext'|'exact-only'|'never', knownSlugs: Set<string>, isUserInvocable: (slug: string) => boolean }}
241
364
  */
242
365
  function skillIndex(skills) {
243
366
  const byName = new Map();
@@ -266,6 +389,9 @@ function skillIndex(skills) {
266
389
  defaultTrackOf(slug) {
267
390
  return byName.get(slug)?.default_track ?? null;
268
391
  },
392
+ passthroughPolicyOf(slug) {
393
+ return byName.get(slug)?.passthrough_policy ?? 'freetext';
394
+ },
269
395
  isUserInvocable(slug) {
270
396
  return userInvocableSlugs.has(slug);
271
397
  },
@@ -384,11 +510,13 @@ export function cmdRoute(projectDir, extraArgs) {
384
510
  reason: 'workspace source ahead of installed kernel — run /apt:update --from-source',
385
511
  };
386
512
  }
387
- // Catch-up panel (LD-11): lazy-compute on interactive (TTY) calls only, and
388
- // only when config exists (init has no config yet). The compute also
389
- // advances the Last-Seen Marker after panel eval (LD-02). Non-TTY calls are
390
- // strict no-ops no read, no write, no field. Folded onto every returned
391
- // envelope below as a top-level `catch_up` field, mirroring update_check.
513
+ // Catch-up panel (LD-11): lazy-compute only on interactive `/apt` calls
514
+ // (explicit `APT_FORCE_TTY=1` signal preferred, TTY sniff fallback see
515
+ // isInteractiveTty), and only when config exists (init has no config yet).
516
+ // The compute also advances the Last-Seen Marker after panel eval (LD-02).
517
+ // Non-interactive calls are strict no-ops no read, no write, no field.
518
+ // Folded onto every returned envelope below as a top-level `catch_up` field,
519
+ // mirroring update_check.
392
520
  const catch_up = hasConfig && isInteractiveTty() ? computeCatchUpForRoute(targetDir) : null;
393
521
  // ---------------- Deterministic branches (zero-behavior-change) ----------------
394
522
  // These fire regardless of host detection status — missing host is not
@@ -455,7 +583,34 @@ export function cmdRoute(projectDir, extraArgs) {
455
583
  // src/__tests__/route-pr-review-skill.test.ts for the full contract.
456
584
  // The PR_REVIEW_SIGNAL regex itself is defined at module scope above.
457
585
  const isPrReviewFreetext = firstWord === 'review' && PR_REVIEW_SIGNAL.test(remainingArgs);
458
- if (!isPrReviewFreetext && index.knownSlugs.has(firstWord)) {
586
+ // Per-skill passthrough policy (Item 2). The policy lives in frontmatter and
587
+ // is read via the index — NO hardcoded slug list enters route.mjs.
588
+ // - freetext (default): always passthrough on a first-word match (today's
589
+ // behavior, byte-identical);
590
+ // - exact-only: passthrough only when the remainder is arg-shaped — a prose
591
+ // remainder ('Triage the failing harness now') falls through to
592
+ // classify (the classify envelope still carries the skill, so a
593
+ // wrong fall-through self-heals, unlike a silent hijack);
594
+ // - never: always classify.
595
+ // When the gate fails we do NOT early-return — control falls through to the
596
+ // classify path below, which still surfaces the skill for re-selection.
597
+ //
598
+ // The pre-existing `review` PR-review carve-out (isPrReviewFreetext) is the
599
+ // authoritative prose-vs-invocation discriminator for `review` and STAYS
600
+ // as-is this task (spec Out-of-Scope). So when the carve-out has already
601
+ // governed `review` (firstWord === 'review'), the exact-only heuristic is
602
+ // bypassed — applying both would double-gate `review` and break the locked
603
+ // PR-review false-positive walls (e.g. "review the pull request feature",
604
+ // no-digit → passthrough). The carve-out already routed every digit-bearing
605
+ // PR reference to classify above.
606
+ const policy = index.passthroughPolicyOf(firstWord);
607
+ const carveOutGovernsReview = firstWord === 'review';
608
+ const passthroughOk = policy === 'freetext' || carveOutGovernsReview
609
+ ? true
610
+ : policy === 'never'
611
+ ? false
612
+ : isArgShapedRemainder(remainingArgs);
613
+ if (!isPrReviewFreetext && index.knownSlugs.has(firstWord) && passthroughOk) {
459
614
  const shouldSpawn = index.spawnsAgent(firstWord);
460
615
  const gate_preview = previewGatesFor(firstWord);
461
616
  const defaultTrack = index.defaultTrackOf(firstWord);
@@ -1 +1 @@
1
- {"version":3,"file":"route.mjs","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.mjs","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"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"}
@@ -40,6 +40,10 @@ export type DiscoveredSkill = {
40
40
  execution_modes: string[];
41
41
  task_context: "create-new" | "require-existing" | "self-managed" | "none";
42
42
  default_track: ("QUICK" | "STANDARD" | "DEEP" | "DEBUG") | undefined;
43
+ /**
44
+ * router passthrough policy; always set (defaults to 'freetext' when the frontmatter omits it)
45
+ */
46
+ passthrough_policy: "freetext" | "exact-only" | "never";
43
47
  /**
44
48
  * absolute path to the SKILL.md
45
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-discover.d.mts","sourceRoot":"","sources":["../../../src/cli/route/skill-discover.mjs"],"names":[],"mappings":"AA4RA;;;;;;;GAOG;AACH,sCAEC;AAED;;;;;;;;;;;;;GAaG;AACH,mEAJG;IAAqB,SAAS,EAAtB,MAAM;IACS,mBAAmB,EAAlC,MAAM,EAAE;CAChB,GAAU,cAAc,CAc1B;;UA5Ra,MAAM;iBACN,MAAM;WACN,MAAM;YACN,MAAM;iBACN,MAAM;oBACN,OAAO;cACP,OAAO;kBACP,OAAO;gBACP,MAAM,GAAC,IAAI;WACX,MAAM,EAAE;4BACR,MAAM;qBACN,MAAM,EAAE;kBACR,YAAY,GAAC,kBAAkB,GAAC,cAAc,GAAC,MAAM;mBACrD,CAAC,OAAO,GAAC,UAAU,GAAC,MAAM,GAAC,OAAO,CAAC,GAAC,SAAS;;;;eAC7C,MAAM;;;eAKN,MAAM;YACN,mBAAmB,GAAC,qBAAqB,GAAC,uBAAuB,GAAC,YAAY;;;;YAM9E,eAAe,EAAE;aACjB,cAAc,EAAE;mBAChB,MAAM,EAAE"}
1
+ {"version":3,"file":"skill-discover.d.mts","sourceRoot":"","sources":["../../../src/cli/route/skill-discover.mjs"],"names":[],"mappings":"AA8RA;;;;;;;GAOG;AACH,sCAEC;AAED;;;;;;;;;;;;;GAaG;AACH,mEAJG;IAAqB,SAAS,EAAtB,MAAM;IACS,mBAAmB,EAAlC,MAAM,EAAE;CAChB,GAAU,cAAc,CAc1B;;UA9Ra,MAAM;iBACN,MAAM;WACN,MAAM;YACN,MAAM;iBACN,MAAM;oBACN,OAAO;cACP,OAAO;kBACP,OAAO;gBACP,MAAM,GAAC,IAAI;WACX,MAAM,EAAE;4BACR,MAAM;qBACN,MAAM,EAAE;kBACR,YAAY,GAAC,kBAAkB,GAAC,cAAc,GAAC,MAAM;mBACrD,CAAC,OAAO,GAAC,UAAU,GAAC,MAAM,GAAC,OAAO,CAAC,GAAC,SAAS;;;;wBAC7C,UAAU,GAAC,YAAY,GAAC,OAAO;;;;eAC/B,MAAM;;;eAKN,MAAM;YACN,mBAAmB,GAAC,qBAAqB,GAAC,uBAAuB,GAAC,YAAY;;;;YAM9E,eAAe,EAAE;aACjB,cAAc,EAAE;mBAChB,MAAM,EAAE"}
@@ -39,6 +39,7 @@ const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n/;
39
39
  * @property {string[]} execution_modes
40
40
  * @property {'create-new'|'require-existing'|'self-managed'|'none'} task_context
41
41
  * @property {('QUICK'|'STANDARD'|'DEEP'|'DEBUG')|undefined} default_track
42
+ * @property {'freetext'|'exact-only'|'never'} passthrough_policy router passthrough policy; always set (defaults to 'freetext' when the frontmatter omits it)
42
43
  * @property {string} file_path absolute path to the SKILL.md
43
44
  */
44
45
  /**
@@ -158,6 +159,7 @@ function readSkill(file) {
158
159
  execution_modes: Array.isArray(d.execution_modes) ? [...d.execution_modes] : [],
159
160
  task_context: d.task_context,
160
161
  default_track: d.default_track,
162
+ passthrough_policy: d.passthrough_policy ?? 'freetext',
161
163
  file_path: file,
162
164
  },
163
165
  };
@@ -1 +1 @@
1
- {"version":3,"file":"skill-discover.mjs","sourceRoot":"","sources":["../../../src/cli/route/skill-discover.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-discover.mjs","sourceRoot":"","sources":["../../../src/cli/route/skill-discover.mjs"],"names":[],"mappings":"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"}
@@ -41,6 +41,24 @@ export const TASK_CONTEXTS: readonly string[];
41
41
  * declaring it here lets a skill own its default without a router code change.
42
42
  */
43
43
  export const TRACK_VALUES: readonly string[];
44
+ /**
45
+ * Per-skill router passthrough policy (Item-2 router fix). Controls whether the
46
+ * router's first-word skill-passthrough match passes through to this skill or
47
+ * falls through to the host-LLM classify path when the input is free-text prose:
48
+ * - `freetext` (default when omitted) — current behavior: any input whose
49
+ * first word equals the slug passes through, byte-identical.
50
+ * - `exact-only` — pass through ONLY when the remainder is arg-shaped (empty /
51
+ * bare slug, all flag-or-path-or-numeric tokens, or a short
52
+ * ≤3-token lowercase noun phrase). A prose-shaped remainder
53
+ * (sentence-case opener, English stop word, or >3 tokens) falls
54
+ * through to classify. Opt-in for action-verb slugs that are
55
+ * also everyday imperatives (triage/debug/review/improve).
56
+ * - `never` — reserved: always fall through to classify. No skill uses it
57
+ * this task; the value exists for symmetry + future use.
58
+ * Read by route.mjs via skillIndex.passthroughPolicyOf(slug) — no hardcoded
59
+ * slug list enters the router.
60
+ */
61
+ export const PASSTHROUGH_POLICIES: readonly string[];
44
62
  /**
45
63
  * Required XML-style section tags that MUST appear (opening + closing) in the
46
64
  * SKILL.md body. Order is not enforced — authors can lay out the sections
@@ -88,6 +106,9 @@ export const SkillFrontmatterSchema: z.ZodObject<{
88
106
  default_track: z.ZodOptional<z.ZodEnum<{
89
107
  [x: string]: string;
90
108
  }>>;
109
+ passthrough_policy: z.ZodOptional<z.ZodEnum<{
110
+ [x: string]: string;
111
+ }>>;
91
112
  triggers: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
113
  color: z.ZodOptional<z.ZodString>;
93
114
  produces: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.mts","sourceRoot":"","sources":["../../../src/cli/skill-author/contract.mjs"],"names":[],"mappings":"AA2MA;;;;;GAKG;AACH,0CAHW,OAAO,GACL,OAAO,KAAK,EAAE,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAI9F;AArLD,sCAA4D;AAE5D;;;;GAIG;AACH,yCAAwD;AAExD;;;;GAIG;AACH,6CASE;AAEF;;GAEG;AACH,uCAeE;AAEF;;;;GAIG;AACH,gDAAoG;AAEpG;;;;;GAKG;AACH,8CAKE;AAEF;;;;GAIG;AACH,6CAAiF;AAEjF;;;;GAIG;AACH,kDAKE;AAEF;;;;GAIG;AACH,uDAAoG;AAepG;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2DG;kBAhLe,KAAK"}
1
+ {"version":3,"file":"contract.d.mts","sourceRoot":"","sources":["../../../src/cli/skill-author/contract.mjs"],"names":[],"mappings":"AAkOA;;;;;GAKG;AACH,0CAHW,OAAO,GACL,OAAO,KAAK,EAAE,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAI9F;AA5MD,sCAA4D;AAE5D;;;;GAIG;AACH,yCAAwD;AAExD;;;;GAIG;AACH,6CASE;AAEF;;GAEG;AACH,uCAeE;AAEF;;;;GAIG;AACH,gDAAoG;AAEpG;;;;;GAKG;AACH,8CAKE;AAEF;;;;GAIG;AACH,6CAAiF;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,qDAAsF;AAEtF;;;;GAIG;AACH,kDAKE;AAEF;;;;GAIG;AACH,uDAAoG;AAepG;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+DG;kBAvMe,KAAK"}
@@ -91,6 +91,24 @@ export const TASK_CONTEXTS = Object.freeze([
91
91
  * declaring it here lets a skill own its default without a router code change.
92
92
  */
93
93
  export const TRACK_VALUES = Object.freeze(['QUICK', 'STANDARD', 'DEEP', 'DEBUG']);
94
+ /**
95
+ * Per-skill router passthrough policy (Item-2 router fix). Controls whether the
96
+ * router's first-word skill-passthrough match passes through to this skill or
97
+ * falls through to the host-LLM classify path when the input is free-text prose:
98
+ * - `freetext` (default when omitted) — current behavior: any input whose
99
+ * first word equals the slug passes through, byte-identical.
100
+ * - `exact-only` — pass through ONLY when the remainder is arg-shaped (empty /
101
+ * bare slug, all flag-or-path-or-numeric tokens, or a short
102
+ * ≤3-token lowercase noun phrase). A prose-shaped remainder
103
+ * (sentence-case opener, English stop word, or >3 tokens) falls
104
+ * through to classify. Opt-in for action-verb slugs that are
105
+ * also everyday imperatives (triage/debug/review/improve).
106
+ * - `never` — reserved: always fall through to classify. No skill uses it
107
+ * this task; the value exists for symmetry + future use.
108
+ * Read by route.mjs via skillIndex.passthroughPolicyOf(slug) — no hardcoded
109
+ * slug list enters the router.
110
+ */
111
+ export const PASSTHROUGH_POLICIES = Object.freeze(['freetext', 'exact-only', 'never']);
94
112
  /**
95
113
  * Required XML-style section tags that MUST appear (opening + closing) in the
96
114
  * SKILL.md body. Order is not enforced — authors can lay out the sections
@@ -148,6 +166,10 @@ export const SkillFrontmatterSchema = z
148
166
  execution_modes: z.array(ExecutionModeSchema).min(1),
149
167
  task_context: z.enum([...TASK_CONTEXTS]),
150
168
  default_track: z.enum([...TRACK_VALUES]).optional(),
169
+ // Per-skill router passthrough policy (Item-2). OPTIONAL — omission
170
+ // resolves to 'freetext' in skill-discover.mjs (byte-identical to
171
+ // today), so every existing SKILL.md validates unchanged.
172
+ passthrough_policy: z.enum([...PASSTHROUGH_POLICIES]).optional(),
151
173
  // Legacy / optional pass-throughs — kept as opt-in so migrations
152
174
  // don't immediately break skills that carry them.
153
175
  triggers: z.array(z.string()).optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../src/cli/skill-author/contract.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,wEAAwE;AACxE,0EAA0E;AAC1E,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAA;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,WAAW;IACX,SAAS;IACT,SAAS;IACT,aAAa;IACb,QAAQ;IACR,MAAM;IACN,WAAW;IACX,OAAO;CACP,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;CACL,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;AAEpG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,YAAY;IACZ,kBAAkB;IAClB,cAAc;IACd,MAAM;CACN,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,aAAa;IACb,oBAAoB;IACpB,eAAe;IACf,WAAW;CACX,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,CAAC,CAAA;AAEpG,SAAS,aAAa,CAAC,GAAG;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE;IACrD,OAAO,EAAE,yBAAyB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,mBAAmB,8BAA8B;CACtH,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;AACvC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACrC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE;QACxC,OAAO,EAAE,mCAAmC,gBAAgB,mCAAmC;KAC/F,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sDAAsD,CAAC;IACtF,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IACxF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,mBAAmB;IAC3C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,iEAAiE;IACjE,kDAAkD;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,sDAAsD;IACtD,gEAAgE;IAChE,+DAA+D;IAC/D,uEAAuE;IACvE,sEAAsE;IACtE,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,uEAAuE;IACvE,+DAA+D;IAC/D,gEAAgE;IAChE,yDAAyD;IACzD,+CAA+C;IAC/C,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,WAAW,EAAE;KACb,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,0DAA0D;YACnE,IAAI,EAAE,CAAC,YAAY,CAAC;SACpB,CAAC,CAAA;IACH,CAAC;IACD,IACC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;QACnC,OAAO,IAAI,CAAC,sBAAsB,KAAK,QAAQ;QAC/C,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAC1D,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,yDAAyD,IAAI,CAAC,sBAAsB,IAAI;YACjG,IAAI,EAAE,CAAC,iBAAiB,CAAC;SACzB,CAAC,CAAA;IACH,CAAC;AACF,CAAC,CAAC,CAAA;AAEH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAI;IACvC,OAAO,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../src/cli/skill-author/contract.mjs"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aperant",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
5
5
  "author": {
6
6
  "name": "Mikalsen AI",
@@ -52,9 +52,16 @@ you must follow when classifying.
52
52
  Before doing ANYTHING else, classify the user's input:
53
53
 
54
54
  ```bash
55
- node packages/framework/bin/apt-tools.mjs route . --input "$ARGUMENTS"
55
+ APT_FORCE_TTY=1 node packages/framework/bin/apt-tools.mjs route . --input "$ARGUMENTS"
56
56
  ```
57
57
 
58
+ The `APT_FORCE_TTY=1` prefix is the EXPLICIT interactive signal — not a real
59
+ TTY — and it is what makes the catch-up panel compute on this top-level `/apt`
60
+ call (the Bash tool runs `route` as a captured, non-TTY subprocess, so the
61
+ isTTY sniff alone would never open the gate). Spawned-subagent, fan-out, and
62
+ background `route` calls deliberately OMIT this signal (or set
63
+ `APT_CATCH_UP_DISABLE=1`) so the panel never fires inside a nested call.
64
+
58
65
  Parse the JSON result. The `mode` field determines what you do next. Display the routing decision to the user:
59
66
 
60
67
  ```
@@ -98,9 +105,10 @@ While you were away:
98
105
  ```
99
106
 
100
107
  This is display-only here — the Last-Seen Marker advance happens in route.mjs,
101
- not in this skill. The panel is computed lazily on interactive (TTY) calls
102
- only; non-TTY/background/spawned calls carry no `catch_up` field. Do not call
103
- it an "activity feed", "changelog", or "notifications" it is the
108
+ not in this skill. The panel is computed lazily only when the explicit
109
+ interactive signal (`APT_FORCE_TTY=1`, set above) is present NOT a real TTY;
110
+ non-TTY/background/spawned calls omit the signal and carry no `catch_up` field.
111
+ Do not call it an "activity feed", "changelog", or "notifications" — it is the
104
112
  Welcome-Back Summary + Team-Change Digest.
105
113
 
106
114
  Then proceed to the matching mode handler below. Do NOT deviate from the routing decision.
@@ -11,6 +11,7 @@ spawns_agent: false
11
11
  agent_name: null
12
12
  task_context: create-new
13
13
  default_track: DEBUG
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: auto
15
16
  execution_modes:
16
17
  - auto
@@ -11,6 +11,7 @@ spawns_agent: true
11
11
  agent_name: "apt-improver"
12
12
  task_context: create-new
13
13
  default_track: DEEP
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: step
15
16
  execution_modes:
16
17
  - auto
@@ -10,6 +10,7 @@ internal: false
10
10
  spawns_agent: true
11
11
  agent_name: "apt-reviewer"
12
12
  task_context: require-existing
13
+ passthrough_policy: exact-only
13
14
  default_execution_mode: auto
14
15
  execution_modes:
15
16
  - auto
@@ -11,6 +11,7 @@ spawns_agent: false
11
11
  agent_name: null
12
12
  task_context: require-existing
13
13
  default_track: STANDARD
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: step
15
16
  execution_modes:
16
17
  - auto
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aperant/framework",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
5
5
  "author": "Mikalsen AI <hello@mikalsen.ai>",
6
6
  "type": "module",
@@ -52,9 +52,16 @@ you must follow when classifying.
52
52
  Before doing ANYTHING else, classify the user's input:
53
53
 
54
54
  ```bash
55
- node packages/framework/bin/apt-tools.mjs route . --input "$ARGUMENTS"
55
+ APT_FORCE_TTY=1 node packages/framework/bin/apt-tools.mjs route . --input "$ARGUMENTS"
56
56
  ```
57
57
 
58
+ The `APT_FORCE_TTY=1` prefix is the EXPLICIT interactive signal — not a real
59
+ TTY — and it is what makes the catch-up panel compute on this top-level `/apt`
60
+ call (the Bash tool runs `route` as a captured, non-TTY subprocess, so the
61
+ isTTY sniff alone would never open the gate). Spawned-subagent, fan-out, and
62
+ background `route` calls deliberately OMIT this signal (or set
63
+ `APT_CATCH_UP_DISABLE=1`) so the panel never fires inside a nested call.
64
+
58
65
  Parse the JSON result. The `mode` field determines what you do next. Display the routing decision to the user:
59
66
 
60
67
  ```
@@ -98,9 +105,10 @@ While you were away:
98
105
  ```
99
106
 
100
107
  This is display-only here — the Last-Seen Marker advance happens in route.mjs,
101
- not in this skill. The panel is computed lazily on interactive (TTY) calls
102
- only; non-TTY/background/spawned calls carry no `catch_up` field. Do not call
103
- it an "activity feed", "changelog", or "notifications" it is the
108
+ not in this skill. The panel is computed lazily only when the explicit
109
+ interactive signal (`APT_FORCE_TTY=1`, set above) is present NOT a real TTY;
110
+ non-TTY/background/spawned calls omit the signal and carry no `catch_up` field.
111
+ Do not call it an "activity feed", "changelog", or "notifications" — it is the
104
112
  Welcome-Back Summary + Team-Change Digest.
105
113
 
106
114
  Then proceed to the matching mode handler below. Do NOT deviate from the routing decision.
@@ -11,6 +11,7 @@ spawns_agent: false
11
11
  agent_name: null
12
12
  task_context: create-new
13
13
  default_track: DEBUG
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: auto
15
16
  execution_modes:
16
17
  - auto
@@ -11,6 +11,7 @@ spawns_agent: true
11
11
  agent_name: "apt-improver"
12
12
  task_context: create-new
13
13
  default_track: DEEP
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: step
15
16
  execution_modes:
16
17
  - auto
@@ -10,6 +10,7 @@ internal: false
10
10
  spawns_agent: true
11
11
  agent_name: "apt-reviewer"
12
12
  task_context: require-existing
13
+ passthrough_policy: exact-only
13
14
  default_execution_mode: auto
14
15
  execution_modes:
15
16
  - auto
@@ -11,6 +11,7 @@ spawns_agent: false
11
11
  agent_name: null
12
12
  task_context: require-existing
13
13
  default_track: STANDARD
14
+ passthrough_policy: exact-only
14
15
  default_execution_mode: step
15
16
  execution_modes:
16
17
  - auto
@@ -102,12 +102,26 @@ function readUpdateCheckCache() {
102
102
  }
103
103
 
104
104
  /**
105
- * Is this an interactive (TTY) apt call? The catch-up panel + Last-Seen Marker
106
- * are gated to interactive contexts (LD-02) exactly like the statusline
107
- * isTTY gate so spawned subagents, fan-out workers, and non-TTY/piped calls
108
- * are strict no-ops (they neither read nor write the marker). `APT_FORCE_TTY`
109
- * forces the gate open for tests; `APT_CATCH_UP_DISABLE` forces it closed so a
110
- * background spawner can opt every nested call out.
105
+ * Is this an interactive `/apt` call? The catch-up panel + Last-Seen Marker
106
+ * are gated to interactive contexts (LD-02) so spawned subagents, fan-out
107
+ * workers, and background/piped calls are strict no-ops (they neither read nor
108
+ * write the marker).
109
+ *
110
+ * The PRODUCTION trigger is the EXPLICIT interactive signal `APT_FORCE_TTY=1`,
111
+ * which the top-level `/apt` skill sets on its `apt-tools route` call
112
+ * (`skills/apt/SKILL.md`). The skill runs `route` via the Bash tool — a
113
+ * captured, non-TTY subprocess whose stdout/stderr are piped, never a PTY — so
114
+ * the `process.stdout/stderr.isTTY` sniff below is ALWAYS false on that path.
115
+ * The explicit signal is therefore the load-bearing opener; the isTTY sniff is
116
+ * only a SECONDARY fallback so a genuinely-interactive direct `apt-tools route`
117
+ * CLI call (a real terminal) still computes the panel.
118
+ *
119
+ * `APT_FORCE_TTY` does double duty: the test-override role AND the production
120
+ * interactive signal (no new env var — keeps the schema + opt-out unchanged).
121
+ * `APT_CATCH_UP_DISABLE` forces the gate closed so a background spawner can opt
122
+ * every nested call out (it wins over the signal). Spawned / fan-out / nested
123
+ * route calls deliberately set NEITHER (or set APT_CATCH_UP_DISABLE), so the
124
+ * panel never fires inside a sub-agent.
111
125
  */
112
126
  function isInteractiveTty() {
113
127
  if (process.env.APT_CATCH_UP_DISABLE === '1') return false
@@ -131,7 +145,7 @@ function isInteractiveTty() {
131
145
  * isInteractiveTty), so background/spawned calls never touch the marker.
132
146
  *
133
147
  * @param {string} targetDir
134
- * @returns {object|null} the catch_up panel, or null.
148
+ * @returns {{ welcome_back: object|null, team_digest: object|null }|null} the catch_up panel, or null.
135
149
  */
136
150
  function computeCatchUpForRoute(targetDir) {
137
151
  // Setup mirrors cmdCatchUp in commands/catch-up.mjs (recompute-only variant).
@@ -223,6 +237,118 @@ function normalizeAptInvocation(input) {
223
237
  */
224
238
  const PR_REVIEW_SIGNAL = /(?:\bPR\s*#?\s*\d+|#\d+|\bpull\s*request\s*#?\s*\d+)\b/i
225
239
 
240
+ /**
241
+ * English function/stop words used by `isArgShapedRemainder` (ID-04) to detect
242
+ * a prose-shaped remainder. Conservative on purpose: a remainder containing any
243
+ * of these reads like a sentence, so under `exact-only` it falls through to the
244
+ * host-LLM classify path instead of hijacking the slug. Hoisted to module scope
245
+ * (frozen) so the Set is built once at load time. Lowercase keys only — the
246
+ * helper lowercases tokens before lookup.
247
+ */
248
+ const PASSTHROUGH_STOP_WORDS = Object.freeze(
249
+ new Set([
250
+ 'the',
251
+ 'a',
252
+ 'an',
253
+ 'is',
254
+ 'are',
255
+ 'was',
256
+ 'were',
257
+ 'be',
258
+ 'been',
259
+ 'keeps',
260
+ 'keep',
261
+ 'now',
262
+ 'please',
263
+ 'that',
264
+ 'this',
265
+ 'these',
266
+ 'those',
267
+ 'my',
268
+ 'our',
269
+ 'your',
270
+ 'their',
271
+ 'it',
272
+ 'its',
273
+ 'to',
274
+ 'of',
275
+ 'in',
276
+ 'on',
277
+ 'at',
278
+ 'for',
279
+ 'and',
280
+ 'but',
281
+ 'or',
282
+ 'so',
283
+ 'then',
284
+ 'when',
285
+ 'while',
286
+ 'because',
287
+ 'i',
288
+ 'we',
289
+ 'they',
290
+ 'you',
291
+ 'fails',
292
+ 'failing',
293
+ 'failed',
294
+ 'crashing',
295
+ 'crashed',
296
+ 'broken',
297
+ 'with',
298
+ 'from',
299
+ 'into',
300
+ ]),
301
+ )
302
+
303
+ /**
304
+ * Pure, deterministic classifier (ID-04) for the remainder after a slug's first
305
+ * word, used by the `exact-only` passthrough policy. Returns true when the
306
+ * remainder is ARG-SHAPED (→ passthrough) and false when it is PROSE-SHAPED
307
+ * (→ fall through to the host-LLM classify path). No I/O.
308
+ *
309
+ * Arg-shaped iff:
310
+ * 1. empty (bare slug, e.g. `triage`), OR
311
+ * 2. EVERY whitespace token is flag-shaped (`--fix-all` / `-x`), path-shaped
312
+ * (contains `/`, `\`, or `.` → `src/foo.ts`), or numeric/id-shaped
313
+ * (`42` / `#7`), OR
314
+ * 3. it is a SHORT phrase (≤3 tokens) that does NOT read like a sentence:
315
+ * the leading token is NOT sentence-case (`/^[A-Z]/` and not an ALL-CAPS
316
+ * acronym) AND no token is an English function/stop word.
317
+ *
318
+ * Otherwise prose-shaped → false. See ID-04's case table + TD-03 for the
319
+ * pinned contract.
320
+ *
321
+ * @param {string} remainder the slug's trailing args, already trimmed/joined
322
+ * @returns {boolean} true → arg-shaped (passthrough); false → prose (classify)
323
+ */
324
+ export function isArgShapedRemainder(remainder) {
325
+ const trimmed = typeof remainder === 'string' ? remainder.trim() : ''
326
+ // 1. Empty / bare slug.
327
+ if (trimmed === '') return true
328
+
329
+ const tokens = trimmed.split(/\s+/)
330
+
331
+ const isFlag = (t) => /^--?[\w-]+$/.test(t)
332
+ const isPath = (t) => /[/\\.]/.test(t)
333
+ const isNumericId = (t) => /^#?\d+$/.test(t)
334
+
335
+ // 2. Every token is flag / path / numeric-id shaped.
336
+ if (tokens.every((t) => isFlag(t) || isPath(t) || isNumericId(t))) return true
337
+
338
+ // 3. Short phrase (≤3 tokens) that does not read like a sentence.
339
+ if (tokens.length > 3) return false
340
+ const lead = tokens[0]
341
+ // Sentence-case leading token (Capitalized, not an ALL-CAPS acronym) reads
342
+ // like the start of a prose sentence.
343
+ const isAllCapsAcronym = /^[A-Z0-9]+$/.test(lead)
344
+ if (/^[A-Z]/.test(lead) && !isAllCapsAcronym) return false
345
+ // Any English function/stop word anywhere → prose.
346
+ for (const t of tokens) {
347
+ if (PASSTHROUGH_STOP_WORDS.has(t.toLowerCase())) return false
348
+ }
349
+ return true
350
+ }
351
+
226
352
  /**
227
353
  * Canonical skill-slug index — reads every skill's agent_name and
228
354
  * spawns_agent flag from its frontmatter so the router doesn't carry a
@@ -239,7 +365,7 @@ const PR_REVIEW_SIGNAL = /(?:\bPR\s*#?\s*\d+|#\d+|\bpull\s*request\s*#?\s*\d+)\b
239
365
  * so this keeps the two paths consistent.
240
366
  *
241
367
  * @param {import('../route/skill-discover.mjs').DiscoveredSkill[]} skills
242
- * @returns {{ agentOf: (slug: string) => string|null, spawnsAgent: (slug: string) => boolean, taskContextOf: (slug: string) => string|null, defaultTrackOf: (slug: string) => string|null, knownSlugs: Set<string>, isUserInvocable: (slug: string) => boolean }}
368
+ * @returns {{ agentOf: (slug: string) => string|null, spawnsAgent: (slug: string) => boolean, taskContextOf: (slug: string) => string|null, defaultTrackOf: (slug: string) => string|null, passthroughPolicyOf: (slug: string) => 'freetext'|'exact-only'|'never', knownSlugs: Set<string>, isUserInvocable: (slug: string) => boolean }}
243
369
  */
244
370
  function skillIndex(skills) {
245
371
  const byName = new Map()
@@ -267,6 +393,9 @@ function skillIndex(skills) {
267
393
  defaultTrackOf(slug) {
268
394
  return byName.get(slug)?.default_track ?? null
269
395
  },
396
+ passthroughPolicyOf(slug) {
397
+ return byName.get(slug)?.passthrough_policy ?? 'freetext'
398
+ },
270
399
  isUserInvocable(slug) {
271
400
  return userInvocableSlugs.has(slug)
272
401
  },
@@ -386,11 +515,13 @@ export function cmdRoute(projectDir, extraArgs) {
386
515
  }
387
516
  }
388
517
 
389
- // Catch-up panel (LD-11): lazy-compute on interactive (TTY) calls only, and
390
- // only when config exists (init has no config yet). The compute also
391
- // advances the Last-Seen Marker after panel eval (LD-02). Non-TTY calls are
392
- // strict no-ops no read, no write, no field. Folded onto every returned
393
- // envelope below as a top-level `catch_up` field, mirroring update_check.
518
+ // Catch-up panel (LD-11): lazy-compute only on interactive `/apt` calls
519
+ // (explicit `APT_FORCE_TTY=1` signal preferred, TTY sniff fallback see
520
+ // isInteractiveTty), and only when config exists (init has no config yet).
521
+ // The compute also advances the Last-Seen Marker after panel eval (LD-02).
522
+ // Non-interactive calls are strict no-ops no read, no write, no field.
523
+ // Folded onto every returned envelope below as a top-level `catch_up` field,
524
+ // mirroring update_check.
394
525
  const catch_up = hasConfig && isInteractiveTty() ? computeCatchUpForRoute(targetDir) : null
395
526
 
396
527
  // ---------------- Deterministic branches (zero-behavior-change) ----------------
@@ -465,7 +596,36 @@ export function cmdRoute(projectDir, extraArgs) {
465
596
  // The PR_REVIEW_SIGNAL regex itself is defined at module scope above.
466
597
  const isPrReviewFreetext = firstWord === 'review' && PR_REVIEW_SIGNAL.test(remainingArgs)
467
598
 
468
- if (!isPrReviewFreetext && index.knownSlugs.has(firstWord)) {
599
+ // Per-skill passthrough policy (Item 2). The policy lives in frontmatter and
600
+ // is read via the index — NO hardcoded slug list enters route.mjs.
601
+ // - freetext (default): always passthrough on a first-word match (today's
602
+ // behavior, byte-identical);
603
+ // - exact-only: passthrough only when the remainder is arg-shaped — a prose
604
+ // remainder ('Triage the failing harness now') falls through to
605
+ // classify (the classify envelope still carries the skill, so a
606
+ // wrong fall-through self-heals, unlike a silent hijack);
607
+ // - never: always classify.
608
+ // When the gate fails we do NOT early-return — control falls through to the
609
+ // classify path below, which still surfaces the skill for re-selection.
610
+ //
611
+ // The pre-existing `review` PR-review carve-out (isPrReviewFreetext) is the
612
+ // authoritative prose-vs-invocation discriminator for `review` and STAYS
613
+ // as-is this task (spec Out-of-Scope). So when the carve-out has already
614
+ // governed `review` (firstWord === 'review'), the exact-only heuristic is
615
+ // bypassed — applying both would double-gate `review` and break the locked
616
+ // PR-review false-positive walls (e.g. "review the pull request feature",
617
+ // no-digit → passthrough). The carve-out already routed every digit-bearing
618
+ // PR reference to classify above.
619
+ const policy = index.passthroughPolicyOf(firstWord)
620
+ const carveOutGovernsReview = firstWord === 'review'
621
+ const passthroughOk =
622
+ policy === 'freetext' || carveOutGovernsReview
623
+ ? true
624
+ : policy === 'never'
625
+ ? false
626
+ : isArgShapedRemainder(remainingArgs)
627
+
628
+ if (!isPrReviewFreetext && index.knownSlugs.has(firstWord) && passthroughOk) {
469
629
  const shouldSpawn = index.spawnsAgent(firstWord)
470
630
  const gate_preview = previewGatesFor(firstWord)
471
631
  const defaultTrack = index.defaultTrackOf(firstWord)
@@ -50,6 +50,7 @@ const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n/
50
50
  * @property {string[]} execution_modes
51
51
  * @property {'create-new'|'require-existing'|'self-managed'|'none'} task_context
52
52
  * @property {('QUICK'|'STANDARD'|'DEEP'|'DEBUG')|undefined} default_track
53
+ * @property {'freetext'|'exact-only'|'never'} passthrough_policy router passthrough policy; always set (defaults to 'freetext' when the frontmatter omits it)
53
54
  * @property {string} file_path absolute path to the SKILL.md
54
55
  */
55
56
 
@@ -170,6 +171,7 @@ function readSkill(file) {
170
171
  execution_modes: Array.isArray(d.execution_modes) ? [...d.execution_modes] : [],
171
172
  task_context: d.task_context,
172
173
  default_track: d.default_track,
174
+ passthrough_policy: d.passthrough_policy ?? 'freetext',
173
175
  file_path: file,
174
176
  },
175
177
  }
@@ -100,6 +100,25 @@ export const TASK_CONTEXTS = Object.freeze([
100
100
  */
101
101
  export const TRACK_VALUES = Object.freeze(['QUICK', 'STANDARD', 'DEEP', 'DEBUG'])
102
102
 
103
+ /**
104
+ * Per-skill router passthrough policy (Item-2 router fix). Controls whether the
105
+ * router's first-word skill-passthrough match passes through to this skill or
106
+ * falls through to the host-LLM classify path when the input is free-text prose:
107
+ * - `freetext` (default when omitted) — current behavior: any input whose
108
+ * first word equals the slug passes through, byte-identical.
109
+ * - `exact-only` — pass through ONLY when the remainder is arg-shaped (empty /
110
+ * bare slug, all flag-or-path-or-numeric tokens, or a short
111
+ * ≤3-token lowercase noun phrase). A prose-shaped remainder
112
+ * (sentence-case opener, English stop word, or >3 tokens) falls
113
+ * through to classify. Opt-in for action-verb slugs that are
114
+ * also everyday imperatives (triage/debug/review/improve).
115
+ * - `never` — reserved: always fall through to classify. No skill uses it
116
+ * this task; the value exists for symmetry + future use.
117
+ * Read by route.mjs via skillIndex.passthroughPolicyOf(slug) — no hardcoded
118
+ * slug list enters the router.
119
+ */
120
+ export const PASSTHROUGH_POLICIES = Object.freeze(['freetext', 'exact-only', 'never'])
121
+
103
122
  /**
104
123
  * Required XML-style section tags that MUST appear (opening + closing) in the
105
124
  * SKILL.md body. Order is not enforced — authors can lay out the sections
@@ -160,6 +179,10 @@ export const SkillFrontmatterSchema = z
160
179
  execution_modes: z.array(ExecutionModeSchema).min(1),
161
180
  task_context: z.enum([...TASK_CONTEXTS]),
162
181
  default_track: z.enum([...TRACK_VALUES]).optional(),
182
+ // Per-skill router passthrough policy (Item-2). OPTIONAL — omission
183
+ // resolves to 'freetext' in skill-discover.mjs (byte-identical to
184
+ // today), so every existing SKILL.md validates unchanged.
185
+ passthrough_policy: z.enum([...PASSTHROUGH_POLICIES]).optional(),
163
186
  // Legacy / optional pass-throughs — kept as opt-in so migrations
164
187
  // don't immediately break skills that carry them.
165
188
  triggers: z.array(z.string()).optional(),