[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C44PC2HB8S19XTKMKGPK8S":3,"skill-same:01M6C44PC2HB8S19XTKMKGPK8S":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6C44PC2HB8S19XTKMKGPK8S","frame-credit-ledger",null,"Warn-only frame credit-ledger pre-PR hook orchestration. Use when Code-Conductor has just run `gh pr create` and needs to surface frame port-coverage gaps as a non-blocking ledger comment on the new PR, or when a maintainer wants to (re)run the ledger against an existing PR for observation. DO NOT USE FOR: plugin entry-point version-bump guardrails (use `plugin-release-hygiene`), post-merge cleanup or pre-merge strategic assessment (use `post-pr-review`), or any flow that should block PR creation — the ledger is warn-only and never gates the PR.","Grimblaz\u002Fagent-orchestra","Grimblaz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F74755849?v=4","01M6C430M9XZDHGHPWQVTQ3KMA","01M6C430RJY3MMX0QAZ3X8DR3Y",3,"MIT","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fframe-credit-ledger\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"frame credit ledger","Guardrails","only","never","version","use","coverage","just","gh","gh pr","review","code","run","create","cleanup","assessment","coverage gaps","plugin","pr","orchestration","2026-11-10 10:12:30",false,"---\nname: frame-credit-ledger\ndescription: \"Warn-only frame credit-ledger pre-PR hook orchestration. Use when Code-Conductor has just run `gh pr create` and needs to surface frame port-coverage gaps as a non-blocking ledger comment on the new PR, or when a maintainer wants to (re)run the ledger against an existing PR for observation. DO NOT USE FOR: plugin entry-point version-bump guardrails (use `plugin-release-hygiene`), post-merge cleanup or pre-merge strategic assessment (use `post-pr-review`), or any flow that should block PR creation — the ledger is warn-only and never gates the PR.\"\n---\n\n\u003C!-- platform-assumptions: markdown skill guidance for Agent Orchestra; assumes the skill is loaded by Code-Conductor (Copilot or Claude) immediately after `gh pr create` succeeds, and that the orchestrator script `.github\u002Fscripts\u002Fframe-credit-ledger.ps1` is on disk and runnable under `pwsh`. -->\n\u003C!-- markdownlint-disable-file MD041 MD003 -->\n\n# Frame credit-ledger\n\n## When to Use\n\n- Code-Conductor has just run `gh pr create` (or an equivalent PR-creation step) and needs to post the warn-only port-coverage ledger before handing the PR back to the operator.\n- A maintainer wants to (re)render the credit ledger comment on an existing PR for observation, without re-running the full conductor flow.\n- The same Code-Conductor run is rebuilding context after a smart-resume and needs the ledger to reflect the current changeset's frame port coverage.\n- The PR body already carries a `\u003C!-- pipeline-metrics ... -->` block at `metrics_version: 4` (the v4 frame additions sit on top of the inherited v3 base per `frame\u002Fpipeline-metrics-v4-schema.md`). Pre-v4 bodies trigger the literal pre-v4 short-circuit notice.\n\n## Purpose\n\nMake frame port-coverage visible as observation, not enforcement. Three customer-framing principles from the issue [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) design intent shape every behavior in this skill:\n\n1. **Surface every gap, silently respect every N\u002FA.** Ports that the changeset triggers but does not credit show up as gaps in the ledger comment. Ports that legitimately do not apply stay silent — the operator is never asked to acknowledge a non-event.\n2. **Suggestions, not directives — warn means warn.** The ledger renders a comment and exits. It never blocks `gh pr create`, never fails the conductor flow, and never asks the operator to \"fix\" anything before merging. Recommendations are recommendations.\n3. **Idempotent observation.** Re-running the ledger on the same PR produces the same comment in place (find-or-upsert), so repeated invocations during a long-lived PR never spawn duplicate warnings.\n\nThis skill operationalizes the umbrella frame-architecture initiative tracked in [#425](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F425) and the warn-only pre-PR hook tracked in [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429).\n\n## Workflow\n\nCode-Conductor invokes this skill as the final observation step after `gh pr create` succeeds in its post-creation flow. The skill's responsibilities are:\n\n- Run the orchestrator script `.github\u002Fscripts\u002Fframe-credit-ledger.ps1` once against the freshly-created PR number.\n- Treat the orchestrator's output as advisory. A non-zero exit or stderr noise must not block the conductor's PR-handoff.\n- Default to warn mode. Enforce mode is reserved for a later sub-issue and is not engaged here.\n- Trust the orchestrator's idempotence. The script finds-or-upserts its own comment, so callers do not need to check for an existing ledger first.\n\nThe canonical invocation is:\n\n```text\npwsh .\u002F.github\u002Fscripts\u002Fframe-credit-ledger.ps1 -Pr \u003CN>\n```\n\nPer the [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) **D-Ordering-1** judge disposition, this skill deliberately does **not** enumerate the orchestrator's parameter list, the fail-open trigger taxonomy, or any internal helper signatures. Those details live in the script and are the single source of truth. For parameter discovery and failure behavior, read the orchestrator's comment header or run it with `-?` for PowerShell's standard help surface; do not duplicate that surface here.\n\nThe conductor's only contract with this skill is:\n\n- Invoke it after PR creation succeeds.\n- Pass the new PR number.\n- Do not branch on the result. The ledger either posts a comment, posts nothing (pre-v3 short-circuit), or fails open silently. None of those outcomes change the conductor flow.\n\n## Review Integrity Contract\n\nReview and post-fix-review adapters declare their integrity contract in adapter frontmatter under `integrity-contract:`. The ledger consumes the current-tree declarations; historical PR-body back-derivation does not read legacy adapter frontmatter, so no `pass-blocks` compatibility shim is needed in the review credit builder.\n\nThe supported sibling keys are:\n\n- `pipeline-stages:` — ordered stage names that the adapter runs, such as `[prosecution, defense, judge]`.\n- `atomic:` — `true` when the declared stages must run as one uninterrupted adversarial pipeline; `n\u002Fa` for single-stage or exempt adapters.\n- `prosecution-passes:` — ordered prosecution pass IDs expected in the prosecution output, or an empty list for exempt adapters.\n- `exempt:` — `true` when the adapter has no numbered prosecution pass output to verify.\n\n`Build-ReviewCreditRow` emits the review credit integrity field as `integrity-check.prosecution-passes`. The standard adapter emits `[1, 2, 3, 4, 5]`; lite and post-fix emit `[1]`; exempt adapters emit an empty list with `status: not-applicable`.\n\n## Atomic Marker Hook\n\nFor applicable adapters declaring `atomic: true`, the ledger performs a warn-only marker check for the exact completion marker `\u003C!-- adversarial-pipeline-atomic-{ISSUE_ID} -->`. The hook searches available PR body\u002Fcomment text and, when the linked issue can be resolved, issue comments. It never blocks PR creation.\n\nThe hook records `adversarial_pipeline_atomic_marker_present` with one of these values:\n\n- `true` — an applicable atomic adapter was detected and its completion marker was present.\n- `false-warn-only` — an applicable atomic adapter was detected but the marker was absent; the ledger emits a warning and continues.\n- `not-applicable` — no applicable atomic adapter was detected.\n\n## Related Guidance\n\n- [`customer-experience\u002FSKILL.md`](..\u002Fcustomer-experience\u002FSKILL.md) — CE Gate is a sibling concern. The ledger reports the credit status of any triggered `ce-gate-*` port; it never _runs_ CE Gate. Execution stays with the customer-experience skill and the Experience-Owner agent.\n- [`plugin-release-hygiene\u002FSKILL.md`](..\u002Fplugin-release-hygiene\u002FSKILL.md) — separate concern. Release-hygiene fires on plugin entry-point edits and proposes version bumps; the credit-ledger fires on PR creation regardless of whether entry-point files were touched. The two skills are co-resident, not overlapping.\n- [`post-pr-review\u002FSKILL.md`](..\u002Fpost-pr-review\u002FSKILL.md) — separate concern. Post-PR-review runs after merge for archival, documentation, and tagging; the credit-ledger runs before merge as a pre-PR observation pass.\n- [`Documents\u002FDesign\u002Fframe-architecture.md`](..\u002F..\u002FDocuments\u002FDesign\u002Fframe-architecture.md) — the **Pre-PR Hook Contract** section is the design reference for the ledger's behavior shape. The **Adapter Model** section governs why this skill is methodology and not a port-filling adapter.\n- Issue [#425](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F425) — frame-architecture umbrella that tracks the audit → declarations → enforcement arc.\n- Issue [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) — the warn-only pre-PR hook that this skill describes.\n\n## Frame Ports Filled By This Skill\n\nNone — this skill is methodology, not a port-filling adapter. The credit-ledger orchestrator is the **enforcement** layer for the frame; no port is \"filled\" by enforcement itself. Per [`Documents\u002FDesign\u002Fframe-architecture.md`](..\u002F..\u002FDocuments\u002FDesign\u002Fframe-architecture.md) Adapter Model, ports are filled by skills and agents whose terminal output becomes the credit for that port. The ledger reads those credits, it does not produce one.\n\n## Gotchas\n\n- **Cost telemetry is best-effort and always fail-open.** If the cost libs fail to load (parse error, missing file) or if any step in the cost composition block throws, the orchestrator degrades gracefully: the ledger comment is posted without a Cost Pattern section. The cost pattern never gates or delays PR creation.\n\n- **Cost Pattern CI verification fires on more than the `cost-reduction` label.** The presence-check workflow's `if:` condition (`.github\u002Fworkflows\u002Fcost-pattern-presence-check.yml`) is the source of truth for exactly which PRs get a CI verification pass — read it directly rather than re-deriving the trigger set here, since it has drifted from a single-arm description before. As of this writing it has three arms: PRs carrying the `cost-reduction` label, any PR whose head branch starts with `feature\u002Fissue-`, and `issue_comment` events on PRs that carry the `cost-reduction` label. PRs matching none of these arms have no CI gate and may have no Cost Pattern section at all (the orchestrator still attempts composition, but there is no CI verification pass).\n\n- **Model key matching in the rate table is exact.** The `cost-rate-table.json` keys must match the model string that appears in `message.model` in the JSONL transcript. If Claude introduces a new model variant (e.g., `claude-sonnet-4-7`) that is not yet in the rate table, cost for that model is set to null and `null_cost_events` increments. Update `cost-rate-table.json` and commit a new version entry when a new model is deployed.\n\n- **Transcript slug derivation preserves case and maps every non-alphanumeric character to a dash — but only after path-shape- and platform-specific normalization and a degenerate-input guard run first.** The substitution phase (`cwd.replace(\u002F[^a-zA-Z0-9]\u002Fg, '-')`, capped at 200 characters with a base-36 hash suffix appended beyond that) never collapses, trims, or lowercases — so `C:\\Users\\Micah\\Code 2\\copilot-orchestra` yields `C--Users-Micah-Code-2-copilot-orchestra` and a `.claude\\worktrees\\` checkout yields `...-Orchestra--claude-worktrees-...` (the dotted segment contributes its own dash on top of the separator's). But `Get-CostTranscriptSlug` is not that substitution alone: it first rejects a path with no ASCII alphanumeric character (returns `''`), then normalizes MSYS\u002Fseparator\u002Ftrailing-separator path shapes to match what Claude Code's own `process.cwd()` would report — normalization that *does* trim, on the reasoning that a normalized string is what should feed the (still trim-free) substitution. And the 200-character cap bounds the substituted prefix specifically; the appended `-\u003Cbase36-hash>` suffix sits beyond it, not inside it. Issue #908 corrected the substitution rule itself from an earlier per-segment join that lowercased the drive and only substituted spaces, which derived a directory name that never existed for worktree checkouts. If the Claude projects directory uses a different slug format in practice, adjust the derivation in `cost-walker.ps1` rather than trying to rename directories.\n\n- **Partial or unknown sessions are excluded from rolling baselines.** `excluded_from_rolling_baseline: true` is emitted in the `cost-pattern-data` YAML for any session that did not end with `stop_reason: end_turn`. These entries are skipped by `ConvertTo-CostRollingEntries` and do not contribute to anomaly detection statistics. A PR that ends mid-session (e.g., operator-interrupted) will show the partial-session warning header and will not pollute the rolling baseline.\n\n- **The foundational #467 PR should be annotated as an outlier baseline exclusion.** Pass `-ExcludeReason 'foundational-baseline-pr'` to `Get-SessionCompleteness` at the call site, or annotate the PR comment post-hoc. This prevents the unusually large foundational session from skewing the rolling mean and stddev used by anomaly detection on all future PRs.\n\n## Platform-specific invocation\n\nThis skill's methodology is tool-agnostic. Platform-specific routing lives alongside:\n\n- Copilot: [platforms\u002Fcopilot.md](platforms\u002Fcopilot.md)\n- Claude Code: [platforms\u002Fclaude.md](platforms\u002Fclaude.md)\n","\u003C!-- platform-assumptions: markdown skill guidance for Agent Orchestra; assumes the skill is loaded by Code-Conductor (Copilot or Claude) immediately after `gh pr create` succeeds, and that the orchestrator script `.github\u002Fscripts\u002Fframe-credit-ledger.ps1` is on disk and runnable under `pwsh`. -->\n\u003C!-- markdownlint-disable-file MD041 MD003 -->\n\n# Frame credit-ledger\n\n## When to Use\n\n- Code-Conductor has just run `gh pr create` (or an equivalent PR-creation step) and needs to post the warn-only port-coverage ledger before handing the PR back to the operator.\n- A maintainer wants to (re)render the credit ledger comment on an existing PR for observation, without re-running the full conductor flow.\n- The same Code-Conductor run is rebuilding context after a smart-resume and needs the ledger to reflect the current changeset's frame port coverage.\n- The PR body already carries a `\u003C!-- pipeline-metrics ... -->` block at `metrics_version: 4` (the v4 frame additions sit on top of the inherited v3 base per `frame\u002Fpipeline-metrics-v4-schema.md`). Pre-v4 bodies trigger the literal pre-v4 short-circuit notice.\n\n## Purpose\n\nMake frame port-coverage visible as observation, not enforcement. Three customer-framing principles from the issue [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) design intent shape every behavior in this skill:\n\n1. **Surface every gap, silently respect every N\u002FA.** Ports that the changeset triggers but does not credit show up as gaps in the ledger comment. Ports that legitimately do not apply stay silent — the operator is never asked to acknowledge a non-event.\n2. **Suggestions, not directives — warn means warn.** The ledger renders a comment and exits. It never blocks `gh pr create`, never fails the conductor flow, and never asks the operator to \"fix\" anything before merging. Recommendations are recommendations.\n3. **Idempotent observation.** Re-running the ledger on the same PR produces the same comment in place (find-or-upsert), so repeated invocations during a long-lived PR never spawn duplicate warnings.\n\nThis skill operationalizes the umbrella frame-architecture initiative tracked in [#425](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F425) and the warn-only pre-PR hook tracked in [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429).\n\n## Workflow\n\nCode-Conductor invokes this skill as the final observation step after `gh pr create` succeeds in its post-creation flow. The skill's responsibilities are:\n\n- Run the orchestrator script `.github\u002Fscripts\u002Fframe-credit-ledger.ps1` once against the freshly-created PR number.\n- Treat the orchestrator's output as advisory. A non-zero exit or stderr noise must not block the conductor's PR-handoff.\n- Default to warn mode. Enforce mode is reserved for a later sub-issue and is not engaged here.\n- Trust the orchestrator's idempotence. The script finds-or-upserts its own comment, so callers do not need to check for an existing ledger first.\n\nThe canonical invocation is:\n\n```text\npwsh .\u002F.github\u002Fscripts\u002Fframe-credit-ledger.ps1 -Pr \u003CN>\n```\n\nPer the [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) **D-Ordering-1** judge disposition, this skill deliberately does **not** enumerate the orchestrator's parameter list, the fail-open trigger taxonomy, or any internal helper signatures. Those details live in the script and are the single source of truth. For parameter discovery and failure behavior, read the orchestrator's comment header or run it with `-?` for PowerShell's standard help surface; do not duplicate that surface here.\n\nThe conductor's only contract with this skill is:\n\n- Invoke it after PR creation succeeds.\n- Pass the new PR number.\n- Do not branch on the result. The ledger either posts a comment, posts nothing (pre-v3 short-circuit), or fails open silently. None of those outcomes change the conductor flow.\n\n## Review Integrity Contract\n\nReview and post-fix-review adapters declare their integrity contract in adapter frontmatter under `integrity-contract:`. The ledger consumes the current-tree declarations; historical PR-body back-derivation does not read legacy adapter frontmatter, so no `pass-blocks` compatibility shim is needed in the review credit builder.\n\nThe supported sibling keys are:\n\n- `pipeline-stages:` — ordered stage names that the adapter runs, such as `[prosecution, defense, judge]`.\n- `atomic:` — `true` when the declared stages must run as one uninterrupted adversarial pipeline; `n\u002Fa` for single-stage or exempt adapters.\n- `prosecution-passes:` — ordered prosecution pass IDs expected in the prosecution output, or an empty list for exempt adapters.\n- `exempt:` — `true` when the adapter has no numbered prosecution pass output to verify.\n\n`Build-ReviewCreditRow` emits the review credit integrity field as `integrity-check.prosecution-passes`. The standard adapter emits `[1, 2, 3, 4, 5]`; lite and post-fix emit `[1]`; exempt adapters emit an empty list with `status: not-applicable`.\n\n## Atomic Marker Hook\n\nFor applicable adapters declaring `atomic: true`, the ledger performs a warn-only marker check for the exact completion marker `\u003C!-- adversarial-pipeline-atomic-{ISSUE_ID} -->`. The hook searches available PR body\u002Fcomment text and, when the linked issue can be resolved, issue comments. It never blocks PR creation.\n\nThe hook records `adversarial_pipeline_atomic_marker_present` with one of these values:\n\n- `true` — an applicable atomic adapter was detected and its completion marker was present.\n- `false-warn-only` — an applicable atomic adapter was detected but the marker was absent; the ledger emits a warning and continues.\n- `not-applicable` — no applicable atomic adapter was detected.\n\n## Related Guidance\n\n- [`customer-experience\u002FSKILL.md`](..\u002Fcustomer-experience\u002FSKILL.md) — CE Gate is a sibling concern. The ledger reports the credit status of any triggered `ce-gate-*` port; it never _runs_ CE Gate. Execution stays with the customer-experience skill and the Experience-Owner agent.\n- [`plugin-release-hygiene\u002FSKILL.md`](..\u002Fplugin-release-hygiene\u002FSKILL.md) — separate concern. Release-hygiene fires on plugin entry-point edits and proposes version bumps; the credit-ledger fires on PR creation regardless of whether entry-point files were touched. The two skills are co-resident, not overlapping.\n- [`post-pr-review\u002FSKILL.md`](..\u002Fpost-pr-review\u002FSKILL.md) — separate concern. Post-PR-review runs after merge for archival, documentation, and tagging; the credit-ledger runs before merge as a pre-PR observation pass.\n- [`Documents\u002FDesign\u002Fframe-architecture.md`](..\u002F..\u002FDocuments\u002FDesign\u002Fframe-architecture.md) — the **Pre-PR Hook Contract** section is the design reference for the ledger's behavior shape. The **Adapter Model** section governs why this skill is methodology and not a port-filling adapter.\n- Issue [#425](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F425) — frame-architecture umbrella that tracks the audit → declarations → enforcement arc.\n- Issue [#429](https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fissues\u002F429) — the warn-only pre-PR hook that this skill describes.\n\n## Frame Ports Filled By This Skill\n\nNone — this skill is methodology, not a port-filling adapter. The credit-ledger orchestrator is the **enforcement** layer for the frame; no port is \"filled\" by enforcement itself. Per [`Documents\u002FDesign\u002Fframe-architecture.md`](..\u002F..\u002FDocuments\u002FDesign\u002Fframe-architecture.md) Adapter Model, ports are filled by skills and agents whose terminal output becomes the credit for that port. The ledger reads those credits, it does not produce one.\n\n## Gotchas\n\n- **Cost telemetry is best-effort and always fail-open.** If the cost libs fail to load (parse error, missing file) or if any step in the cost composition block throws, the orchestrator degrades gracefully: the ledger comment is posted without a Cost Pattern section. The cost pattern never gates or delays PR creation.\n\n- **Cost Pattern CI verification fires on more than the `cost-reduction` label.** The presence-check workflow's `if:` condition (`.github\u002Fworkflows\u002Fcost-pattern-presence-check.yml`) is the source of truth for exactly which PRs get a CI verification pass — read it directly rather than re-deriving the trigger set here, since it has drifted from a single-arm description before. As of this writing it has three arms: PRs carrying the `cost-reduction` label, any PR whose head branch starts with `feature\u002Fissue-`, and `issue_comment` events on PRs that carry the `cost-reduction` label. PRs matching none of these arms have no CI gate and may have no Cost Pattern section at all (the orchestrator still attempts composition, but there is no CI verification pass).\n\n- **Model key matching in the rate table is exact.** The `cost-rate-table.json` keys must match the model string that appears in `message.model` in the JSONL transcript. If Claude introduces a new model variant (e.g., `claude-sonnet-4-7`) that is not yet in the rate table, cost for that model is set to null and `null_cost_events` increments. Update `cost-rate-table.json` and commit a new version entry when a new model is deployed.\n\n- **Transcript slug derivation preserves case and maps every non-alphanumeric character to a dash — but only after path-shape- and platform-specific normalization and a degenerate-input guard run first.** The substitution phase (`cwd.replace(\u002F[^a-zA-Z0-9]\u002Fg, '-')`, capped at 200 characters with a base-36 hash suffix appended beyond that) never collapses, trims, or lowercases — so `C:\\Users\\Micah\\Code 2\\copilot-orchestra` yields `C--Users-Micah-Code-2-copilot-orchestra` and a `.claude\\worktrees\\` checkout yields `...-Orchestra--claude-worktrees-...` (the dotted segment contributes its own dash on top of the separator's). But `Get-CostTranscriptSlug` is not that substitution alone: it first rejects a path with no ASCII alphanumeric character (returns `''`), then normalizes MSYS\u002Fseparator\u002Ftrailing-separator path shapes to match what Claude Code's own `process.cwd()` would report — normalization that *does* trim, on the reasoning that a normalized string is what should feed the (still trim-free) substitution. And the 200-character cap bounds the substituted prefix specifically; the appended `-\u003Cbase36-hash>` suffix sits beyond it, not inside it. Issue #908 corrected the substitution rule itself from an earlier per-segment join that lowercased the drive and only substituted spaces, which derived a directory name that never existed for worktree checkouts. If the Claude projects directory uses a different slug format in practice, adjust the derivation in `cost-walker.ps1` rather than trying to rename directories.\n\n- **Partial or unknown sessions are excluded from rolling baselines.** `excluded_from_rolling_baseline: true` is emitted in the `cost-pattern-data` YAML for any session that did not end with `stop_reason: end_turn`. These entries are skipped by `ConvertTo-CostRollingEntries` and do not contribute to anomaly detection statistics. A PR that ends mid-session (e.g., operator-interrupted) will show the partial-session warning header and will not pollute the rolling baseline.\n\n- **The foundational #467 PR should be annotated as an outlier baseline exclusion.** Pass `-ExcludeReason 'foundational-baseline-pr'` to `Get-SessionCompleteness` at the call site, or annotate the PR comment post-hoc. This prevents the unusually large foundational session from skewing the rolling mean and stddev used by anomaly detection on all future PRs.\n\n## Platform-specific invocation\n\nThis skill's methodology is tool-agnostic. Platform-specific routing lives alongside:\n\n- Copilot: [platforms\u002Fcopilot.md](platforms\u002Fcopilot.md)\n- Claude Code: [platforms\u002Fclaude.md](platforms\u002Fclaude.md)\n",{"name":5,"description":7},"main","d5486aacc32c9ca1b07173cfd530f8fe75c29e58","skills\u002Fframe-credit-ledger",0,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra","https:\u002F\u002Fgithub.com\u002FGrimblaz","2026-08-16 01:12:46",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Grimblaz\u002Fagent-orchestra --skill frame-credit-ledger",{"tool":56,"command":57},"bunx","bunx skills add Grimblaz\u002Fagent-orchestra --skill frame-credit-ledger",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Grimblaz\u002Fagent-orchestra --skill frame-credit-ledger","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fframe-credit-ledger\u002FSKILL.md",true,[64,70],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"platforms\u002Fclaude.md","REFERENCE","参考文档",1215,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fframe-credit-ledger\u002Fplatforms\u002Fclaude.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"platforms\u002Fcopilot.md",1374,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fframe-credit-ledger\u002Fplatforms\u002Fcopilot.md",[75,108,128,143,171,192],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":89,"publishedAt":38},"01M6C48YMJVFHM7DVGG1WWW5RJ","webapp-testing","Playwright end-to-end testing guidance for web apps, with practical patterns and setup steps. Use when creating or improving browser-based E2E coverage, test stability, and CI execution. DO NOT USE FOR: React component tests (use ui-testing), canvas game interaction (use browser-canvas-testing), TDD workflow (use test-driven-development), debugging failures (use systematic-debugging), or randomized property tests (use property-based-testing).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[81,86],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":87,"categoryName":88,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000009","前端开发",[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,24,23],"testing","webapp testing","webapp","canvas","tdd","workflow","playwright","test","web","react","component","debugging","development","browser","ci","execution","e2e","game",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":38},"01M6C48TNNP2KCSQXV8YK7SK49","verification-before-completion","Evidence-based verification checklist before marking work complete. Use before PRs, releases, marking tickets done, or any \"I'm finished\" declaration; also when naming a baseline commit for a differential suite claim, when designing a mutation campaign or red-run evidence, when making an absence claim, a universal claim, or a one-time demonstration offered as a standing guarantee, when attributing a measurement or claiming a sweep or verification loop is complete, and when stating what a check or a CI suite will do about a change. DO NOT USE FOR: post-merge cleanup or archival (use post-pr-review) or processing GitHub review comments (use code-review-intake).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[115,116,28,117,118,119,36,32,30,29,120,121,104,122,123,124,125,23,126,127],"verification","verification before completion","change","commit","merge","code-review","intake","loop","verification loop","work","check","evidence","campaign",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":38},"01M6C48QZWNTP7JGKD32QZAKKX","validation-methodology","Reusable validation and review methodology for staged validation, failure triage, and prosecution-depth setup. Use when running validation ladders, triaging failures, or executing adversarial review passes. DO NOT USE FOR: CE Gate orchestration, specialist dispatch ownership, or step execution flow (keep those in Code-Conductor).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fvalidation-methodology\u002FSKILL.md",[],[135,136,137,28,138,37,139,140,29,141,105,23,142],"validation","methodology","validation methodology","triage","setup","adversarial review","flow","dispatch",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":157,"publishedAt":38},"01M6C48MCAHG5Z79BJ369CRYRZ","upstream-onboarding","Shared opening-phase protocol for upstream agents (Experience-Owner, Solution-Designer, Issue-Planner) and Code-Conductor when invoked on an existing GitHub issue. Renders a scaled context brief and runs a standards check on inherited work at each phase boundary. Use when a user-invocable agent receives a request referencing an existing GitHub issue and must load solution-authoring and upstream-onboarding at the opening phase. DO NOT USE FOR: subagent dispatches (which already operate within an assessed session context); post-merge review (use post-pr-review); research or non-tree subagents.","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fupstream-onboarding\u002FSKILL.md",[149,152],{"categoryNo":150,"categoryName":151,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[158,159,28,160,161,119,162,36,29,163,164,165,166,167,168,124,125,169,170,23],"onboarding","upstream onboarding","github","research","standards check","protocol","brief","boundary","designer","subagent","planner","user","session",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":185,"publishedAt":38},"01M6C48GPVE120TGPMD1CS365H","ui-testing","Resilient React component testing strategies focusing on user behavior. Use when writing or reviewing component-level React tests, fixing flaky component tests, or establishing React testing patterns. DO NOT USE FOR: Playwright E2E tests (use webapp-testing), canvas game interaction (use browser-canvas-testing), TDD workflow (use test-driven-development), debugging failures (use systematic-debugging), UI component design (use frontend-design), or randomized property tests (use property-based-testing).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fui-testing\u002FSKILL.md",[177,178,179,182],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":87,"categoryName":88,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":180,"categoryName":181,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":183,"categoryName":184,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000032","设计师",[90,186,187,188,189,190,93,95,96,97,99,100,101,102,103,191,106,107,23,92],"ui","ui testing","frontend","design","writing","testing patterns",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":200,"publishedAt":38},"01M6C48DRJ9XBDR2FW0W37DY53","ui-iteration","Reusable screenshot-driven UI polish workflow for iterative visual refinement. Use when improving layout, hierarchy, spacing, feedback, or Tailwind-based presentation through repeated review-and-adjust passes. DO NOT USE FOR: functional bug fixing, accessibility-only audits, or major redesign strategy work (use Code-Smith or frontend-design).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fui-iteration\u002FSKILL.md",[198,199],{"categoryNo":87,"categoryName":88,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":183,"categoryName":184,"taxonomyType":155,"taxonomyTypeDesc":156},[186,201,188,189,28,95,202,29,203,204,205,206,207,124,208,209,23,20],"ui iteration","accessibility","screenshot","Tailwind","polish","ui polish","feedback","redesign","strategy"]