From 60be7b323295572a80499758aff9e922124ef95f Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:36:24 +0000 Subject: [PATCH 01/12] refactor(skills): mandate metadata.version on every skill's frontmatter Only 12 of 39 skills carried metadata.version, and adoption tracked which plugin a skill lived in rather than any stated rule: core, gitea and lint were consistent adopters, bin and kyberforge were consistent non-adopters, git was split with one outlier. There was no documented convention, and skill-author's own bump logic was already written as if presence were conditional. metadata.version is now required on every skill. The 19 skills here that never carried one (bin, kyberforge, gitea-files) are seeded at 1.0.0, not 0.1.0 -- that value stays reserved for a skill's actual creation point under skill-author's existing convention. The skill-frontmatter pre-commit hook now fails a SKILL.md missing the field, the same class of failure as a missing name/description. Full rationale in the new ADR. The git-plugin skills that also need this field follow in the next commit, bundled with issue #113's rtk normalization since both touch the same files. Refs: #127 ADR: 0022 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- .pre-commit-config.yaml | 14 +++- ...022-skill-metadata-version-is-mandatory.md | 70 +++++++++++++++++++ plugins/bin/.apm/skills/caveman/SKILL.md | 2 + plugins/bin/.apm/skills/diagnose/SKILL.md | 2 + plugins/bin/.apm/skills/grill-me/SKILL.md | 2 + .../bin/.apm/skills/grill-with-docs/SKILL.md | 2 + .../improve-codebase-architecture/SKILL.md | 2 + plugins/bin/.apm/skills/prototype/SKILL.md | 2 + plugins/bin/.apm/skills/research/SKILL.md | 1 + plugins/bin/.apm/skills/tdd/SKILL.md | 2 + plugins/bin/.apm/skills/triage/SKILL.md | 2 + plugins/bin/.apm/skills/write-docs/SKILL.md | 2 +- plugins/bin/.apm/skills/zoom-out/SKILL.md | 2 + .../gitea/.apm/skills/gitea-files/SKILL.md | 1 + .../.apm/skills/agent-audit/SKILL.md | 1 + .../.apm/skills/agent-author/SKILL.md | 1 + .../.apm/skills/apm-install/SKILL.md | 1 + .../.apm/skills/apm-workflow/SKILL.md | 1 + plugins/kyberforge/.apm/skills/forge/SKILL.md | 1 + .../.apm/skills/skill-audit/SKILL.md | 1 + .../.apm/skills/skill-author/SKILL.md | 3 +- .../skills/skill-author/references/create.md | 6 +- 22 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 docs/adr/0022-skill-metadata-version-is-mandatory.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ce44c29..79c9540 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -259,8 +259,18 @@ repos: - | for f in "$@"; do if [[ -f "$f" ]]; then - if ! grep -q "^name:" "$f" || ! grep -q "^description:" "$f"; then - echo "ERROR: $f is missing required frontmatter fields (name: and description:)" + missing="" + if ! grep -q "^name:" "$f"; then + missing="${missing}name: " + fi + if ! grep -q "^description:" "$f"; then + missing="${missing}description: " + fi + if ! grep -A10 "^metadata:" "$f" | grep -q " version:"; then + missing="${missing}metadata.version " + fi + if [[ -n "$missing" ]]; then + echo "ERROR: $f is missing required frontmatter fields (${missing})" exit 1 fi fi diff --git a/docs/adr/0022-skill-metadata-version-is-mandatory.md b/docs/adr/0022-skill-metadata-version-is-mandatory.md new file mode 100644 index 0000000..637712e --- /dev/null +++ b/docs/adr/0022-skill-metadata-version-is-mandatory.md @@ -0,0 +1,70 @@ +# Every skill's `metadata.version` is mandatory, not a per-plugin option + +**Status: accepted (2026-09-07).** + +## Context + +`metadata.version` is optional SKILL.md frontmatter (`create.md`'s "Optional frontmatter" list: +"uncomment and fill in, or remove entirely"). `skill-author`'s own bump logic was written +conditionally — "with `metadata.version` present, bump the minor version on create... and the +patch version on improve" — which only makes sense if presence is a real per-skill choice. + +Adoption never followed a rule; it followed the plugin. Of 39 skills, 12 carry a version: + +| Plugin | Has it | Total | +|---|---|---| +| `core` | 3 | 3 | +| `gitea` | 6 | 7 | +| `lint` | 2 | 2 | +| `git` | 1 | 9 | +| `bin` | 0 | 11 | +| `kyberforge` | 0 | 7 | + +`core`, `gitea` and `lint` are consistent adopters (`gitea-files` the one gap); `bin` and +`kyberforge` are consistent non-adopters; `git` has one outlier (`git-commits`, versioned for no +plugin-specific reason found on inspection — no comment, no cross-reference, nothing distinguishing +it from its eight siblings). Issue #127 raised this as an undocumented split: two house norms +coexisting with no stated rule for which applies where, the same class of defect as an unstated +`rtk`/bare-`git` convention (#113) found in the same audit pass. + +## Decision + +**Every skill's frontmatter carries `metadata.version`.** It is no longer optional, and no longer a +per-plugin choice. + +- **The 27 skills that never carried one are seeded at `1.0.0`**, not `0.1.0`. `0.1.0` is + `skill-author`'s existing new-skill starting point, chosen for a skill with no revision history to + its name yet. These 27 have all been through the ADR-0020 retrofit and repeated audit passes + without ever tracking a version; crediting them with `0.1.0` would understate that, and there is + no real history to justify seeding higher than a first stable release. `1.0.0` marks "versioned as + of this retrofit," `0.1.0` keeps meaning "created and never yet revised." +- **New skills still start at `0.1.0`.** `skill-author`'s create/improve bump convention is + unchanged; only the presence of the field stops being conditional. +- **The one outlier in the other direction, `git-commits`, keeps its existing value** (`0.1.3`) — + it already had real tracked history under the old conditional rule, and this decision does not + reset skills that were already compliant. +- **`skill-frontmatter`'s pre-commit hook gains the check.** It already fails a SKILL.md missing + `name:` or `description:`; a missing `metadata.version` is now the same class of failure, not a + style nit an audit might or might not catch. + +## Considered options + +**Leave it per-plugin, document the split.** This was the initial framing of #127 and is coherent — +`core`/`gitea`/`lint` keep it, `bin`/`kyberforge` don't, two outliers get normalized to match their +plugin. Rejected on reconsideration: a rule that says "some plugins track this and some don't" is +strictly harder to state, audit and onboard against than "every skill does," for a field whose entire +job is answering "did this change since I last read it" — a question with the same shape everywhere +it's asked, not one that varies by plugin domain. + +**Drop the field corpus-wide.** Rejected: `skill-author` already depends on it to decide whether a +create/improve pass owes a bump, so the 12 skills carrying it are not tracking dead weight — removing +it discards real revision signal for no gain. + +## Consequences + +27 SKILL.md files gain `metadata.version: "1.0.0"`. `skill-author`'s `create.md` moves the field from +"Optional frontmatter" to the required list, citing this ADR. `skill-author`'s own SKILL.md drops the +"with `metadata.version` present" conditional in its bump-rule line, since presence is no longer in +question. `.pre-commit-config.yaml`'s `skill-frontmatter` hook is extended to require the field, +closing the gap #113 and #118 both named in the same audit pass: a stated rule with nothing enforcing +it drifts the same way an unstated one does. diff --git a/plugins/bin/.apm/skills/caveman/SKILL.md b/plugins/bin/.apm/skills/caveman/SKILL.md index dea5b4a..542810f 100644 --- a/plugins/bin/.apm/skills/caveman/SKILL.md +++ b/plugins/bin/.apm/skills/caveman/SKILL.md @@ -4,6 +4,8 @@ disable-model-invocation: true description: > Ultra-compressed output mode that drops articles, filler and pleasantries while keeping technical substance exact, cutting token usage by roughly 75%. +metadata: + version: "1.0.0" --- Respond terse like smart caveman. All technical substance stay. Only fluff die. diff --git a/plugins/bin/.apm/skills/diagnose/SKILL.md b/plugins/bin/.apm/skills/diagnose/SKILL.md index 1e60479..ee85d02 100644 --- a/plugins/bin/.apm/skills/diagnose/SKILL.md +++ b/plugins/bin/.apm/skills/diagnose/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user says "diagnose this" or "debug this", reports something broken, throwing, or failing, or says something got slow. Not filing or triaging a reported bug -> `triage`. Not test-first feature work -> `tdd`. +metadata: + version: "1.0.0" --- # Diagnose diff --git a/plugins/bin/.apm/skills/grill-me/SKILL.md b/plugins/bin/.apm/skills/grill-me/SKILL.md index 1cc8ede..70bb682 100644 --- a/plugins/bin/.apm/skills/grill-me/SKILL.md +++ b/plugins/bin/.apm/skills/grill-me/SKILL.md @@ -5,6 +5,8 @@ description: > relentless interview — one question at a time, down each branch of the decision tree. Not a plan to challenge against `CONTEXT.md` and ADRs -> `grill-with-docs`. +metadata: + version: "1.0.0" --- Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. diff --git a/plugins/bin/.apm/skills/grill-with-docs/SKILL.md b/plugins/bin/.apm/skills/grill-with-docs/SKILL.md index 8610263..cc93aef 100644 --- a/plugins/bin/.apm/skills/grill-with-docs/SKILL.md +++ b/plugins/bin/.apm/skills/grill-with-docs/SKILL.md @@ -4,6 +4,8 @@ description: > Use when a plan should be stress-tested against the project's domain model — the interview challenges terms against `CONTEXT.md` and writes decisions into it and into ADRs as they land. Not a plain interview -> `grill-me`. +metadata: + version: "1.0.0" --- diff --git a/plugins/bin/.apm/skills/improve-codebase-architecture/SKILL.md b/plugins/bin/.apm/skills/improve-codebase-architecture/SKILL.md index 750876a..48803ca 100644 --- a/plugins/bin/.apm/skills/improve-codebase-architecture/SKILL.md +++ b/plugins/bin/.apm/skills/improve-codebase-architecture/SKILL.md @@ -6,6 +6,8 @@ description: > testable and AI-navigable — deepening opportunities that turn shallow modules into deep ones, informed by `CONTEXT.md` and `docs/adr/`. Not debugging a failure -> `diagnose`. +metadata: + version: "1.0.0" --- # Improve Codebase Architecture diff --git a/plugins/bin/.apm/skills/prototype/SKILL.md b/plugins/bin/.apm/skills/prototype/SKILL.md index 0c9d8e3..b544772 100644 --- a/plugins/bin/.apm/skills/prototype/SKILL.md +++ b/plugins/bin/.apm/skills/prototype/SKILL.md @@ -5,6 +5,8 @@ description: > a data model, state machine or business logic, or to mock up a UI in several variations. Not production code -> `tdd`. Not talking a design through -> `grill-me`. +metadata: + version: "1.0.0" --- # Prototype diff --git a/plugins/bin/.apm/skills/research/SKILL.md b/plugins/bin/.apm/skills/research/SKILL.md index 19fffee..1d114ab 100644 --- a/plugins/bin/.apm/skills/research/SKILL.md +++ b/plugins/bin/.apm/skills/research/SKILL.md @@ -6,6 +6,7 @@ description: >- documentation written from existing code or specs -> `write-docs`. Not a bug or incident -> `diagnose`. metadata: + version: "1.0.0" category: research allowed-tools: - Grep diff --git a/plugins/bin/.apm/skills/tdd/SKILL.md b/plugins/bin/.apm/skills/tdd/SKILL.md index ad3be57..736773a 100644 --- a/plugins/bin/.apm/skills/tdd/SKILL.md +++ b/plugins/bin/.apm/skills/tdd/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user wants a feature built or a bug fixed test-first, in a strict red-green-refactor loop, one behaviour at a time. Not diagnosing an existing bug -> `diagnose`. Not throwaway exploratory code -> `prototype`. +metadata: + version: "1.0.0" --- # Test-Driven Development diff --git a/plugins/bin/.apm/skills/triage/SKILL.md b/plugins/bin/.apm/skills/triage/SKILL.md index d83ab5e..548026e 100644 --- a/plugins/bin/.apm/skills/triage/SKILL.md +++ b/plugins/bin/.apm/skills/triage/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user wants an issue created, triaged, or moved through the tracker's triage states, or an issue prepared for an AFK agent. Not debugging the bug itself -> `diagnose`. Not fleshing out a design -> `grill-with-docs`. +metadata: + version: "1.0.0" --- # Triage diff --git a/plugins/bin/.apm/skills/write-docs/SKILL.md b/plugins/bin/.apm/skills/write-docs/SKILL.md index 30ea51d..06a9a54 100644 --- a/plugins/bin/.apm/skills/write-docs/SKILL.md +++ b/plugins/bin/.apm/skills/write-docs/SKILL.md @@ -6,10 +6,10 @@ description: > module", "create docs for this feature", "write a README for this". Not an ADR or other decision record -> `grill-with-docs`. Not an external tool researched from its docs -> `research`. -version: "1.0" updated: 2026-05-17 when: invoked by explicit trigger ("write docs for X", "document this module", "create docs for this feature") or implicit request to produce technical documentation from code or spec metadata: + version: "1.0" category: implement source: - repo: anthropics/skills diff --git a/plugins/bin/.apm/skills/zoom-out/SKILL.md b/plugins/bin/.apm/skills/zoom-out/SKILL.md index 1e7a5dc..4ba619a 100644 --- a/plugins/bin/.apm/skills/zoom-out/SKILL.md +++ b/plugins/bin/.apm/skills/zoom-out/SKILL.md @@ -2,6 +2,8 @@ name: zoom-out description: Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture. disable-model-invocation: true +metadata: + version: "1.0.0" --- I don't know this area of code well. Go up a layer of abstraction. Give me a map of all the relevant modules and callers, using the project's domain glossary vocabulary. diff --git a/plugins/gitea/.apm/skills/gitea-files/SKILL.md b/plugins/gitea/.apm/skills/gitea-files/SKILL.md index 168e875..26265da 100644 --- a/plugins/gitea/.apm/skills/gitea-files/SKILL.md +++ b/plugins/gitea/.apm/skills/gitea-files/SKILL.md @@ -11,6 +11,7 @@ compatibility: Requires the Gitea MCP server configured with a token scoped to a is not actually required for any of this domain's five tools. metadata: + version: "1.0.0" category: gitea source_keys: - gitea-mcp-repo diff --git a/plugins/kyberforge/.apm/skills/agent-audit/SKILL.md b/plugins/kyberforge/.apm/skills/agent-audit/SKILL.md index 19abac3..cc923e0 100644 --- a/plugins/kyberforge/.apm/skills/agent-audit/SKILL.md +++ b/plugins/kyberforge/.apm/skills/agent-audit/SKILL.md @@ -7,6 +7,7 @@ description: > directory -> skill-audit. allowed-tools: Bash Read metadata: + version: "1.0.0" category: factory source_keys: - context7-websites-code-claude diff --git a/plugins/kyberforge/.apm/skills/agent-author/SKILL.md b/plugins/kyberforge/.apm/skills/agent-author/SKILL.md index c6ca310..b81b5ae 100644 --- a/plugins/kyberforge/.apm/skills/agent-author/SKILL.md +++ b/plugins/kyberforge/.apm/skills/agent-author/SKILL.md @@ -6,6 +6,7 @@ description: > Not read-only review -> `agent-audit`. Not skills -> `skill-author`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: factory source_keys: - context7-websites-code-claude diff --git a/plugins/kyberforge/.apm/skills/apm-install/SKILL.md b/plugins/kyberforge/.apm/skills/apm-install/SKILL.md index 054d161..d576504 100644 --- a/plugins/kyberforge/.apm/skills/apm-install/SKILL.md +++ b/plugins/kyberforge/.apm/skills/apm-install/SKILL.md @@ -6,6 +6,7 @@ description: > authoring, publishing, auditing, or dependency installation for an apm package -> `apm-workflow`. metadata: + version: "1.0.0" category: apm source_keys: - context7-microsoft-apm diff --git a/plugins/kyberforge/.apm/skills/apm-workflow/SKILL.md b/plugins/kyberforge/.apm/skills/apm-workflow/SKILL.md index cd258b4..85e2f30 100644 --- a/plugins/kyberforge/.apm/skills/apm-workflow/SKILL.md +++ b/plugins/kyberforge/.apm/skills/apm-workflow/SKILL.md @@ -5,6 +5,7 @@ description: > the dependencies it declares, or an apm marketplace — even when the user does not say "apm". Not the apm binary or an agent runtime -> `apm-install`. metadata: + version: "1.0.0" category: apm source_keys: - context7-microsoft-apm diff --git a/plugins/kyberforge/.apm/skills/forge/SKILL.md b/plugins/kyberforge/.apm/skills/forge/SKILL.md index 860e9db..f63242a 100644 --- a/plugins/kyberforge/.apm/skills/forge/SKILL.md +++ b/plugins/kyberforge/.apm/skills/forge/SKILL.md @@ -8,6 +8,7 @@ description: > already named — invoke `skill-author`, `agent-author` or `apm-workflow` directly. metadata: + version: "1.0.0" category: factory source_keys: - claude-code-subagents-docs diff --git a/plugins/kyberforge/.apm/skills/skill-audit/SKILL.md b/plugins/kyberforge/.apm/skills/skill-audit/SKILL.md index 1a66612..9e45c2d 100644 --- a/plugins/kyberforge/.apm/skills/skill-audit/SKILL.md +++ b/plugins/kyberforge/.apm/skills/skill-audit/SKILL.md @@ -7,6 +7,7 @@ description: > skill-author. allowed-tools: Bash Read metadata: + version: "1.0.0" category: factory source_keys: - agentskills-home diff --git a/plugins/kyberforge/.apm/skills/skill-author/SKILL.md b/plugins/kyberforge/.apm/skills/skill-author/SKILL.md index 33228c5..6d35dfc 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/SKILL.md +++ b/plugins/kyberforge/.apm/skills/skill-author/SKILL.md @@ -6,6 +6,7 @@ description: > Not read-only review -> `skill-audit`. Not agent files -> `agent-author`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: factory source_keys: - agentskills-home @@ -56,6 +57,6 @@ Gates `/skill-audit` enforces in both flows: Run `/skill-audit` on the resolved skill directory; resolve every FAIL before reporting done. It checks name-to-directory match, placeholders, both size budgets, boundary-target resolution and script hygiene — do not hand-check those. Hand-check the one thing it misses: an empty body reports `PASS SKILL.md body word count 0 (ADR-0020 target: 600)`, so confirm at least one non-empty section exists. -With `metadata.version` present, bump the **minor** version on create (new skills start at `0.1.0`) and the **patch** version on improve. +Bump `metadata.version`: the **minor** version on create (new skills start at `0.1.0`) and the **patch** version on improve. **Commit verification.** Inside a git worktree: once the audit is clean, run `git add` and `git commit` — do not stop at staging. Re-run `git log --oneline -1` and confirm the hash changed from Step 1's. A non-empty `git diff --stat` is not proof: staged-but-uncommitted work is part of no commit and is silently lost if the tree is cleaned up. Report done only once the hash has changed. Outside a worktree (a skill under `~/.claude/skills/`, say) nothing is committable — report done on a clean audit, naming that as the reason. diff --git a/plugins/kyberforge/.apm/skills/skill-author/references/create.md b/plugins/kyberforge/.apm/skills/skill-author/references/create.md index 677425b..9e754cb 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/references/create.md +++ b/plugins/kyberforge/.apm/skills/skill-author/references/create.md @@ -101,8 +101,10 @@ plain sentence and `disable-model-invocation: true` instead. - `license` — include when distributing the skill externally - `compatibility` — include if the skill requires specific tools, runtimes, or network access (max 500 characters) -- `metadata` — key-value map; use `author`, `version`, `category`; add `source_keys` now (Step 6) - if research sources are in context +- `metadata` — key-value map. `version` is **required** on every skill (ADR-0022), seeded at + `"1.0.0"` for a retrofitted skill with no prior version and at `"0.1.0"` for a newly created + skill; `author` and `category` stay optional; add `source_keys` now (Step 6) if research sources + are in context - `allowed-tools` — space-separated pre-approved tools; reduces permission prompts (experimental — support varies by client) - `disable-model-invocation` — hand-invoked skills only -- 2.43.0 From ffaa3afb419f3f2501ca23b7a1e45a699558562e Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:36:34 +0000 Subject: [PATCH 02/12] fix(agent-audit): remove user-invocable as a hand-invoked marker disable-model-invocation and user-invocable are independent Copilot fields: the first gates whether the runtime auto-selects an agent (i.e. whether its description is a routing string), the second only gates manual invocation. An agent can be disable-model-invocation: false plus user-invocable: false and still be model-routed, so the old bullet conflated two unrelated contracts under one trigger. Fixes: #125 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- .../references/description-quality.md | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md b/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md index eac9c27..0b360a3 100644 --- a/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md +++ b/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md @@ -27,15 +27,19 @@ where the body's flowchart specified two. Read the frontmatter before judging a single word. -- **`disable-model-invocation: true` or `user-invocable: false`** — the agent is hand-invoked. Its - description is never matched against user intent, so it is not a routing string. It carries **one - plain human-facing sentence** stating what the agent does. Audit it for that and nothing else. - Reporting a missing trigger clause, a missing boundary clause or absent indirect triggers on a - hand-invoked agent is a wrong finding, not a strict one. Both fields are Copilot-only and neither - is on the vendor-neutral APM allowlist, so this case arises in a Copilot `.agent.md` at - project/user scope and nowhere else. Its Claude Code counterpart has no equivalent field and stays - model-invoked, so the two halves of the pair carrying differently shaped descriptions is expected - there rather than a pair-consistency finding. +- **`disable-model-invocation: true`** — the agent is hand-invoked. Its description is never + matched against user intent, so it is not a routing string. It carries **one plain human-facing + sentence** stating what the agent does. Audit it for that and nothing else. Reporting a missing + trigger clause, a missing boundary clause or absent indirect triggers on a hand-invoked agent is a + wrong finding, not a strict one. The field is Copilot-only and not on the vendor-neutral APM + allowlist, so this case arises in a Copilot `.agent.md` at project/user scope and nowhere else. + Its Claude Code counterpart has no equivalent field and stays model-invoked, so the two halves of + the pair carrying differently shaped descriptions is expected there rather than a + pair-consistency finding. + `user-invocable: false` does not belong in this bullet: it only blocks manual invocation and is + independent of `disable-model-invocation` — an agent can be `user-invocable: false` and still + model-routed, in which case the three-part shape below still applies. It carries no + description-quality contract of its own and is out of this file's scope entirely. - **No such flag** — the agent is model-invoked and the rest of this file applies. ## The three-part shape -- 2.43.0 From 2c6ce438b6b3625c956d060e915fda63a4811932 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:36:49 +0000 Subject: [PATCH 03/12] refactor(git): normalize rtk-prefix usage, add metadata.version Two bundled fixes across the same nine skills, since both touch the same files. Issue #113: skill prose used rtk git and bare git inconsistently for the same operations, with no stated rule for which applied where. Executable instructed commands (a dispatch-table "Run" cell, a fenced code-block procedure, an imperative step) now consistently use rtk git; illustrative or referential mentions -- naming a flag's behavior, quoting a doc heading, warning against an anti-pattern -- stay bare git. Documented in the new plugins/git/README.md, scoped to this plugin only: gitea-* skills talk to the server over MCP tools and carry no git/rtk mentions at all. Also the git-plugin slice of #127: metadata.version added to the eight skills that lacked it. git-commits already had one and is untouched. Fixes: #113 Fixes: #127 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- plugins/git/.apm/skills/git-branches/SKILL.md | 5 +- .../references/branch-operations.md | 30 ++++----- .../references/comparing-branches.md | 10 +-- .../skills/git-branches/references/merging.md | 22 +++---- plugins/git/.apm/skills/git-history/SKILL.md | 15 ++--- .../skills/git-history/references/bisect.md | 28 ++++----- .../git-history/references/git-log-format.md | 52 ++++++++-------- plugins/git/.apm/skills/git-remotes/SKILL.md | 3 +- .../skills/git-remotes/references/fetch.md | 18 +++--- .../skills/git-remotes/references/pull.md | 16 ++--- .../skills/git-remotes/references/push.md | 30 ++++----- .../git-remotes/references/remote-config.md | 28 ++++----- .../git/.apm/skills/git-submodules/SKILL.md | 1 + plugins/git/.apm/skills/git-workflow/SKILL.md | 1 + .../git/.apm/skills/git-worktrees/SKILL.md | 31 +++++----- .../git-worktrees/references/worktrees.md | 62 +++++++++---------- plugins/git/.apm/skills/pc-author/SKILL.md | 1 + .../pc-author/references/create-config.md | 2 +- .../pc-author/references/modify-config.md | 2 +- plugins/git/.apm/skills/pc-run/SKILL.md | 3 +- .../pc-run/references/failure-patterns.md | 4 +- plugins/git/README.md | 51 +++++++++++++++ 22 files changed, 237 insertions(+), 178 deletions(-) create mode 100644 plugins/git/README.md diff --git a/plugins/git/.apm/skills/git-branches/SKILL.md b/plugins/git/.apm/skills/git-branches/SKILL.md index 44d79c9..2bb809a 100644 --- a/plugins/git/.apm/skills/git-branches/SKILL.md +++ b/plugins/git/.apm/skills/git-branches/SKILL.md @@ -9,6 +9,7 @@ description: > Not a Gitea remote's branches -> `gitea-branches`. metadata: + version: "1.0.0" category: git source_keys: - context7-git-htmldocs @@ -20,7 +21,7 @@ metadata: ## Gotchas - **Uncommitted changes abort a switch.** `git switch` refuses rather than clobbering conflicting local edits. Offer to stash and retry — forcing the checkout past it is how work disappears. -- **A branch and a tag can carry the same name.** Detect it before acting — `git branch --list ` and `git tag --list `; output from both means the name is ambiguous. Prefer `git switch` over `git checkout`, and where a command accepts either ref, disambiguate with `refs/heads/` or `refs/tags/`. +- **A branch and a tag can carry the same name.** Detect it before acting — `rtk git branch --list ` and `rtk git tag --list `; output from both means the name is ambiguous. Prefer `git switch` over `git checkout`, and where a command accepts either ref, disambiguate with `refs/heads/` or `refs/tags/`. - **`main` and `master` are a refusal, not a gate.** Force-pushing, force-deleting, or renaming them is rejected even when the caller passes `confirm: true` — no flag makes the remote's history recoverable. Offer a new branch instead. ## Step 1 — Determine the branching pattern @@ -51,7 +52,7 @@ These gates are passable. The `main`/`master` refusal in Gotchas is not. ## Step 4 — Set tracking -A new branch's first push must be `git push -u origin `. The push itself is `git-remotes`' — every remote-side gate lives there, which is why Step 2's remote-delete row hands off the same way — but the upstream requirement originates here, so carry it in the handoff. Without an upstream, later pushes and pulls either fail or silently target the wrong remote branch, and the caller has no way to tell which happened. +A new branch's first push must be `rtk git push -u origin `. The push itself is `git-remotes`' — every remote-side gate lives there, which is why Step 2's remote-delete row hands off the same way — but the upstream requirement originates here, so carry it in the handoff. Without an upstream, later pushes and pulls either fail or silently target the wrong remote branch, and the caller has no way to tell which happened. ## Step 5 — Return a structured result diff --git a/plugins/git/.apm/skills/git-branches/references/branch-operations.md b/plugins/git/.apm/skills/git-branches/references/branch-operations.md index b9e29f4..394dd7f 100644 --- a/plugins/git/.apm/skills/git-branches/references/branch-operations.md +++ b/plugins/git/.apm/skills/git-branches/references/branch-operations.md @@ -8,21 +8,21 @@ source_keys: One command per action. Where two forms exist, the first is the default and the second the escape hatch. -- **create** — `git switch -c `. Base comes from the config's `base_branch` +- **create** — `rtk git switch -c `. Base comes from the config's `base_branch` (`main` under GitHub Flow, usually `develop` under Gitflow). -- **switch** — `git switch ` moves to an existing local branch; it aborts rather than - clobbering conflicting local changes. `git switch -` returns to the previous branch. -- **delete (local)** — `git branch -d ` refuses when the branch holds unmerged commits, - which is why it is the default. `git branch -D ` forces the deletion and discards that +- **switch** — `rtk git switch ` moves to an existing local branch; it aborts rather than + clobbering conflicting local changes. `rtk git switch -` returns to the previous branch. +- **delete (local)** — `rtk git branch -d ` refuses when the branch holds unmerged commits, + which is why it is the default. `rtk git branch -D ` forces the deletion and discards that work — only after the destructive-operation gates pass and `confirm: true` is set. - **delete (remote)** — not this skill's. Deleting a remote branch is a push, and every remote-side gate lives in `git-remotes`; hand it there rather than running the push from here. Its `references/push.md` carries the command and the refspec form. -- **rename** — `git branch -m `. -- **list** — `git branch` (local), `-a` (local plus remote-tracking), `-r` (remote-tracking only), +- **rename** — `rtk git branch -m `. +- **list** — `rtk git branch` (local), `-a` (local plus remote-tracking), `-r` (remote-tracking only), `--merged` / `--no-merged` (filter by merge status into the current branch). -- **track** — `git branch --set-upstream-to=origin/` sets an upstream without pushing. - `git branch -vv` shows the tracking state of every local branch. +- **track** — `rtk git branch --set-upstream-to=origin/` sets an upstream without pushing. + `rtk git branch -vv` shows the tracking state of every local branch. ## get-intent @@ -40,17 +40,17 @@ intent is worse than one built on none. A switch aborts rather than clobbering conflicting local changes (see Gotchas). Stash is the way past it: it shelves the working tree and index so the branch pointer can move. -- **save** — `git stash push -m ""`. Add `-u` to include untracked files; verified on Git +- **save** — `rtk git stash push -m ""`. Add `-u` to include untracked files; verified on Git 2.39.5, a plain `push` leaves them in place, and a plain `push` with *only* untracked changes reports `No local changes to save` and stashes nothing. Bare `git stash` is `push` with no message. -- **restore** — `git stash pop` applies the newest entry and deletes it. `git stash apply stash@{n}` +- **restore** — `rtk git stash pop` applies the newest entry and deletes it. `rtk git stash apply stash@{n}` applies without deleting, for replaying one shelf onto more than one branch. -- **list** — `git stash list`; `git stash show -p stash@{n}` prints that entry's diff. -- **drop** — `git stash drop stash@{n}` deletes one entry. `git stash clear` deletes all of them +- **list** — `rtk git stash list`; `rtk git stash show -p stash@{n}` prints that entry's diff. +- **drop** — `rtk git stash drop stash@{n}` deletes one entry. `rtk git stash clear` deletes all of them and nothing recovers them — confirm before running it. -- **branch from a stash** — `git stash branch stash@{n}` creates a branch at the commit the +- **branch from a stash** — `rtk git stash branch stash@{n}` creates a branch at the commit the stash was taken from and pops it there. Use it when the stash no longer applies to the current tip. **A conflicting `pop` keeps the entry.** Verified on 2.39.5: it exits 1, writes conflict markers, prints "The stash entry is kept in case you need it again", and `git stash list` still shows it. -Resolve, `git add`, then `git stash drop` the entry by hand — otherwise it silently accumulates. +Resolve, `rtk git add`, then `rtk git stash drop` the entry by hand — otherwise it silently accumulates. diff --git a/plugins/git/.apm/skills/git-branches/references/comparing-branches.md b/plugins/git/.apm/skills/git-branches/references/comparing-branches.md index 24c3214..cb26f28 100644 --- a/plugins/git/.apm/skills/git-branches/references/comparing-branches.md +++ b/plugins/git/.apm/skills/git-branches/references/comparing-branches.md @@ -8,9 +8,9 @@ source_keys: The two-dot and three-dot forms mean different things and are easy to swap by accident — check the direction before reporting a result. -- `git log main..feature` — commits on `feature` that are not on `main`. -- `git log feature..main` — the reverse direction: commits on `main` not on `feature`. -- `git log --left-right main...feature` — both diverging sets at once (symmetric difference). -- `git diff main...feature` — the diff from the common ancestor to `feature`'s tip, which is what +- `rtk git log main..feature` — commits on `feature` that are not on `main`. +- `rtk git log feature..main` — the reverse direction: commits on `main` not on `feature`. +- `rtk git log --left-right main...feature` — both diverging sets at once (symmetric difference). +- `rtk git diff main...feature` — the diff from the common ancestor to `feature`'s tip, which is what a reviewer sees, rather than the diff between the two tips. -- `git merge-base main feature` — print the common ancestor commit. +- `rtk git merge-base main feature` — print the common ancestor commit. diff --git a/plugins/git/.apm/skills/git-branches/references/merging.md b/plugins/git/.apm/skills/git-branches/references/merging.md index 0302138..44ec0ac 100644 --- a/plugins/git/.apm/skills/git-branches/references/merging.md +++ b/plugins/git/.apm/skills/git-branches/references/merging.md @@ -9,22 +9,22 @@ source_keys: Scope is fast-forward and merge-commit mechanics plus conflict resolution. Rebase and cherry-pick belong to `git-commits`; revert to `git-history`. -- **Fast-forward** — `git merge ` advances the pointer with no merge commit when the +- **Fast-forward** — `rtk git merge ` advances the pointer with no merge commit when the target has not diverged. -- **True merge** — `git merge --no-ff ` forces a merge commit even when a fast-forward is +- **True merge** — `rtk git merge --no-ff ` forces a merge commit even when a fast-forward is possible. Gitflow requires it on every supporting-branch merge. -- **Squash merge** — `git merge --squash ` stages the combined diff without committing. - Follow it with a `git commit`. -- **Octopus merge** — `git merge branch-a branch-b branch-c` merges more than two branches at +- **Squash merge** — `rtk git merge --squash ` stages the combined diff without committing. + Follow it with a `rtk git commit`. +- **Octopus merge** — `rtk git merge branch-a branch-b branch-c` merges more than two branches at once, but fails outright on any conflict. Use sequential two-way merges when conflicts are likely. ## Conflict resolution -When Git cannot auto-merge it writes conflict markers and stops mid-merge. Run `git status` to -list the conflicted files, edit each to resolve its markers, then `git add ` and -`git merge --continue`. +When Git cannot auto-merge it writes conflict markers and stops mid-merge. Run `rtk git status` to +list the conflicted files, edit each to resolve its markers, then `rtk git add ` and +`rtk git merge --continue`. -- `git merge --abort` restores the pre-merge state. -- `git mergetool` opens the configured merge tool. -- `git diff --diff-filter=U` shows only the still-conflicted files. +- `rtk git merge --abort` restores the pre-merge state. +- `rtk git mergetool` opens the configured merge tool. +- `rtk git diff --diff-filter=U` shows only the still-conflicted files. diff --git a/plugins/git/.apm/skills/git-history/SKILL.md b/plugins/git/.apm/skills/git-history/SKILL.md index 6057bee..ae6cf27 100644 --- a/plugins/git/.apm/skills/git-history/SKILL.md +++ b/plugins/git/.apm/skills/git-history/SKILL.md @@ -8,6 +8,7 @@ description: > `git-commits`. Not a Gitea server's history -> `gitea-branches`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-bisect-docs @@ -34,13 +35,13 @@ allowed-tools: Bash ## Step 2 — Query the log -Default to `git log --oneline`, then narrow by whatever is known: +Default to `rtk git log --oneline`, then narrow by whatever is known: -- **Content**: `git log -S"string"`, or `-G"regex"` to match any diff line. `--pickaxe-regex` makes the `-S` argument a POSIX ERE; `--pickaxe-all` shows every file in a matching changeset. -- **A line or function**: `git log -L ,:` or `git log -L ::`. Confirm the range resolves before reporting on it — an off-by-one silently omits the target. -- **A file across renames**: `git log --follow -- `. Without `--follow` the history stops at the rename boundary. +- **Content**: `rtk git log -S"string"`, or `-G"regex"` to match any diff line. `--pickaxe-regex` makes the `-S` argument a POSIX ERE; `--pickaxe-all` shows every file in a matching changeset. +- **A line or function**: `rtk git log -L ,:` or `rtk git log -L ::`. Confirm the range resolves before reporting on it — an off-by-one silently omits the target. +- **A file across renames**: `rtk git log --follow -- `. Without `--follow` the history stops at the rename boundary. - **Mainline only**: `--first-parent` follows the integration branch and skips commits merged in from side branches. -- **Structured output**: `git log --format="%h | %s | %an (%ar)"`. +- **Structured output**: `rtk git log --format="%h | %s | %an (%ar)"`. If you need the placeholder catalogue, format presets, `--diff-filter` letters, full `-L` syntax, ancestry filters, pickaxe binary-file behaviour, or `git diff` output-control flags such as `--stat`, `--word-diff` and the whitespace options, read `references/git-log-format.md`. @@ -49,8 +50,8 @@ If you need the placeholder catalogue, format presets, `--diff-filter` letters, Offer the operation and its consequence; run it only once the user has chosen. - Backporting the commit to another branch is a cherry-pick, and cherry-pick is `git-commits`' — it owns the destination-branch check, the `rtk git` wrapper and the `--abort` path. Hand it the SHA; do not run `git cherry-pick` from here. -- `git revert ` adds a new commit undoing it — for un-applying merged work without rewriting history. -- `git blame ` attributes each line to the commit that last touched it, when the question is which commit introduced one specific line. +- `rtk git revert ` adds a new commit undoing it — for un-applying merged work without rewriting history. +- `rtk git blame ` attributes each line to the commit that last touched it, when the question is which commit introduced one specific line. For diff output control on the located commit, read `references/git-log-format.md`. diff --git a/plugins/git/.apm/skills/git-history/references/bisect.md b/plugins/git/.apm/skills/git-history/references/bisect.md index 2fd7026..bfca3e6 100644 --- a/plugins/git/.apm/skills/git-history/references/bisect.md +++ b/plugins/git/.apm/skills/git-history/references/bisect.md @@ -12,43 +12,43 @@ or line range to search the log for. Binary search reduces the trials from O(N) ## Manual flow ```bash -git bisect start -git bisect bad [HEAD] # mark current (or specified) as broken -git bisect good # mark known-good baseline +rtk git bisect start +rtk git bisect bad [HEAD] # mark current (or specified) as broken +rtk git bisect good # mark known-good baseline # Git checks out the midpoint; test it -git bisect good # test passes -git bisect bad # test fails +rtk git bisect good # test passes +rtk git bisect bad # test fails # Repeat until git reports "X is the first bad commit" -git bisect reset # return to the original HEAD +rtk git bisect reset # return to the original HEAD ``` ## Automated -With a test command available, use `git bisect run `. Git reads the exit code: `0` good, +With a test command available, use `rtk git bisect run `. Git reads the exit code: `0` good, `1`–`124` bad, `125` skip (build broken), `126`–`127` POSIX shell errors, treated as bad, and `128` or above aborts the session outright rather than marking the commit bad. ## Untestable commits -`git bisect skip` excludes a commit that cannot be built or tested without deciding good or bad +`rtk git bisect skip` excludes a commit that cannot be built or tested without deciding good or bad for it. When the first bad commit is adjacent to a skipped range, bisect reports that it cannot pinpoint the culprit and lists the candidates — that is the precise answer the skip range allows, not a failure. ## Undoing a wrong good/bad call -`git bisect log` prints the session's decision history. Save it, edit out the mistaken entry, and +`rtk git bisect log` prints the session's decision history. Save it, edit out the mistaken entry, and resume from the corrected log rather than restarting the search: ```bash -git bisect log > bisect.log +rtk git bisect log > bisect.log # edit bisect.log, removing the wrong decision -git bisect reset && git bisect replay bisect.log +rtk git bisect reset && rtk git bisect replay bisect.log ``` ## Narrowing and speeding up -- `git bisect start HEAD v1.2 -- src/` restricts bisection to a path, cutting the trial count. +- `rtk git bisect start HEAD v1.2 -- src/` restricts bisection to a path, cutting the trial count. - `--no-checkout` updates the `BISECT_HEAD` ref instead of checking out a working tree — useful for tests that do not need one, and automatic in bare repos. - `--first-parent` follows only first parents at merges, finding the integration commit that @@ -56,12 +56,12 @@ git bisect reset && git bisect replay bisect.log ## Inspecting the remaining candidates -`git bisect visualize` (alias `view`) opens the suspects in gitk, falling back to `git log` when +`rtk git bisect visualize` (alias `view`) opens the suspects in gitk, falling back to `git log` when no graphical display is detected. Add `--stat` or `-p` for a diffstat or full patches. ## Hunting a non-bug property change -`git bisect start --term-new --term-old ` searches for any property change — a +`rtk git bisect start --term-new --term-old ` searches for any property change — a performance regression, say — instead of a bug. Use the custom terms in place of `good` and `bad` for the rest of the session. diff --git a/plugins/git/.apm/skills/git-history/references/git-log-format.md b/plugins/git/.apm/skills/git-history/references/git-log-format.md index 821bfdd..0b511f3 100644 --- a/plugins/git/.apm/skills/git-history/references/git-log-format.md +++ b/plugins/git/.apm/skills/git-history/references/git-log-format.md @@ -116,15 +116,15 @@ source_keys: **`-S`** — finds commits where the **count** of `` changed (i.e. the string was added or removed net). Does not match commits where the string merely appears in a diff hunk without a count change. ```bash -git log -S"my_function" -git log -S"my_function" --pickaxe-regex # treat as POSIX ERE -git log -S"my_function" --pickaxe-all # show all files in matching changesets +rtk git log -S"my_function" +rtk git log -S"my_function" --pickaxe-regex # treat as POSIX ERE +rtk git log -S"my_function" --pickaxe-all # show all files in matching changesets ``` **`-G`** — finds commits where any added or removed **line** in the patch matches ``. Broader than `-S`: matches whenever the pattern appears in diff text regardless of count. ```bash -git log -G"frotz\(nitfol" +rtk git log -G"frotz\(nitfol" ``` **Critical distinction:** given a diff that removes one occurrence of `foo` and adds one occurrence of `foo` (net change = 0): @@ -151,8 +151,8 @@ Selects commits (in `git log`) or files (in `git diff`) by change type: Lowercase letters **exclude** that type: ```bash -git log --diff-filter=ad # exclude added and deleted files -git log --diff-filter=M # only show commits with modified files +rtk git log --diff-filter=ad # exclude added and deleted files +rtk git log --diff-filter=M # only show commits with modified files ``` `C` and `R` only appear when copy/rename detection is enabled (`-C`, `-M` flags or `diff.renames` config). @@ -162,10 +162,10 @@ git log --diff-filter=M # only show commits with modified files Traces the evolution of a specific range of lines or a named function through commits. Implies `--patch`. ```bash -git log -L 10,20:file.txt -git log -L /start_pattern/,/end_pattern/:file.txt -git log -L :myfunction:src/app.c -git log -L /init/,+15:config.py # 15 lines after first match of /init/ +rtk git log -L 10,20:file.txt +rtk git log -L /start_pattern/,/end_pattern/:file.txt +rtk git log -L :myfunction:src/app.c +rtk git log -L /init/,+15:config.py # 15 lines after first match of /init/ ``` Range formats: @@ -182,12 +182,12 @@ Limitations: incompatible with `--raw`, `--numstat`, `--shortstat`, `--name-only ## Graph and Ancestry Filters ```bash -git log --first-parent # at merges, follow only first parent (mainline evolution) -git log --merges # only merge commits (≥2 parents); equivalent to --min-parents=2 -git log --no-merges # only non-merge commits; equivalent to --max-parents=1 -git log --ancestry-path D..M # only commits actually on the path from D to M -git log --min-parents= # include only commits with ≥ n parents -git log --max-parents= # include only commits with ≤ n parents +rtk git log --first-parent # at merges, follow only first parent (mainline evolution) +rtk git log --merges # only merge commits (≥2 parents); equivalent to --min-parents=2 +rtk git log --no-merges # only non-merge commits; equivalent to --max-parents=1 +rtk git log --ancestry-path D..M # only commits actually on the path from D to M +rtk git log --min-parents= # include only commits with ≥ n parents +rtk git log --max-parents= # include only commits with ≤ n parents ``` `--ancestry-path` is significant: without it, `D..M` includes all commits reachable from M but not D — including side branches that merged into the path. With it, only commits directly between D and M are shown. @@ -197,17 +197,17 @@ git log --max-parents= # include only commits with ≤ n parents ### --stat ```bash -git diff --stat # diffstat: file names + ± bar -git diff --stat=,, -git diff --compact-summary # alongside --stat: shows new/gone, +x/-x (executable), +l (symlink) -git diff --numstat # machine-readable: \t\t; - for binary +rtk git diff --stat # diffstat: file names + ± bar +rtk git diff --stat=,, +rtk git diff --compact-summary # alongside --stat: shows new/gone, +x/-x (executable), +l (symlink) +rtk git diff --numstat # machine-readable: \t\t; - for binary ``` ### --name-only / --name-status ```bash -git diff --name-only # only filenames, one per line -git diff --name-status # status letter + filename per line +rtk git diff --name-only # only filenames, one per line +rtk git diff --name-status # status letter + filename per line ``` `--name-status` uses the same status letters as `--diff-filter`. @@ -215,10 +215,10 @@ git diff --name-status # status letter + filename per line ### --word-diff ```bash -git diff --word-diff # inline word-level diff with [-removed-] {+added+} markers -git diff --word-diff=color # color only, no markers -git diff --word-diff=porcelain # machine-readable: +/- prefixed lines, ~ for newlines -git diff --word-diff-regex= # define what counts as a "word" +rtk git diff --word-diff # inline word-level diff with [-removed-] {+added+} markers +rtk git diff --word-diff=color # color only, no markers +rtk git diff --word-diff=porcelain # machine-readable: +/- prefixed lines, ~ for newlines +rtk git diff --word-diff-regex= # define what counts as a "word" ``` ### Whitespace Flags diff --git a/plugins/git/.apm/skills/git-remotes/SKILL.md b/plugins/git/.apm/skills/git-remotes/SKILL.md index 5f457c1..f88024d 100644 --- a/plugins/git/.apm/skills/git-remotes/SKILL.md +++ b/plugins/git/.apm/skills/git-remotes/SKILL.md @@ -10,6 +10,7 @@ description: > Not submodule pointers -> `git-submodules`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-remote-docs @@ -27,7 +28,7 @@ metadata: ## Step 1 — Clear the force-push gate -`main` and `master` are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, `git push --force` and `-f` run only after the caller passes `confirm: true` for that specific push — for a human caller, prompt instead of failing. +`main` and `master` are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, `rtk git push --force` and `-f` run only after the caller passes `confirm: true` for that specific push — for a human caller, prompt instead of failing. ## Step 2 — Dispatch diff --git a/plugins/git/.apm/skills/git-remotes/references/fetch.md b/plugins/git/.apm/skills/git-remotes/references/fetch.md index 0826b17..8198b71 100644 --- a/plugins/git/.apm/skills/git-remotes/references/fetch.md +++ b/plugins/git/.apm/skills/git-remotes/references/fetch.md @@ -11,19 +11,19 @@ Fetch **with no refspec** updates remote-tracking branches (`refs/remotes/ That safety comes from the default refspec, not from `fetch` itself. Give it an explicit one and it writes to local branches: verified on Git 2.39.5, `git fetch origin main:probe` fast-forwarded the local `probe` branch, and a `+` prefix force-updates the destination, discarding whatever commits it held. Treat any `fetch` carrying a `:` refspec as a branch update, not a read. -- **One remote**: `git fetch ` — all branches -- **One branch**: `git fetch ` — the result lands in `FETCH_HEAD`, not a tracking ref -- **All remotes**: `git fetch --all` -- **Prune properly**: `git fetch --all --prune --prune-tags` cleans stale branches *and* tags -- **Auto-prune**: `git config --global fetch.prune true` (or `remote..prune` to scope it to one remote), and `fetch.pruneTags true` for tags +- **One remote**: `rtk git fetch ` — all branches +- **One branch**: `rtk git fetch ` — the result lands in `FETCH_HEAD`, not a tracking ref +- **All remotes**: `rtk git fetch --all` +- **Prune properly**: `rtk git fetch --all --prune --prune-tags` cleans stale branches *and* tags +- **Auto-prune**: `rtk git config --global fetch.prune true` (or `remote..prune` to scope it to one remote), and `fetch.pruneTags true` for tags ## Shallow and partial fetch ```bash -git fetch --depth= # deepen history, or create a shallow clone -git fetch --unshallow # convert a shallow clone to full history -git fetch --update-shallow # allow the fetch to update the shallow boundary -git fetch --refmap='' # fetch without updating any tracking ref (FETCH_HEAD only) +rtk git fetch --depth= # deepen history, or create a shallow clone +rtk git fetch --unshallow # convert a shallow clone to full history +rtk git fetch --update-shallow # allow the fetch to update the shallow boundary +rtk git fetch --refmap='' # fetch without updating any tracking ref (FETCH_HEAD only) ``` ## Default fetch refspec diff --git a/plugins/git/.apm/skills/git-remotes/references/pull.md b/plugins/git/.apm/skills/git-remotes/references/pull.md index b769742..dcf72fc 100644 --- a/plugins/git/.apm/skills/git-remotes/references/pull.md +++ b/plugins/git/.apm/skills/git-remotes/references/pull.md @@ -9,11 +9,11 @@ source_keys: Default strategy: `--ff-only`. It fails on divergence, which forces a conscious choice instead of an accidental merge commit. -- **Fast-forward only**: `git pull --ff-only` — the recommended default -- **Rebase**: `git pull --rebase` replays your commits on top for linear history, but rewrites SHAs. Verify nothing being replayed has been pushed: rebasing published commits breaks everyone downstream. -- **Merge**: `git pull --no-rebase` — three-way merge commit, preserves original commits, non-linear -- **Rebase preserving merges**: `git pull --rebase=merges` keeps intentional local merge commits during the replay -- **Stage without committing**: `git pull --squash` collapses incoming commits into staged changes; you write the message +- **Fast-forward only**: `rtk git pull --ff-only` — the recommended default +- **Rebase**: `rtk git pull --rebase` replays your commits on top for linear history, but rewrites SHAs. Verify nothing being replayed has been pushed: rebasing published commits breaks everyone downstream. +- **Merge**: `rtk git pull --no-rebase` — three-way merge commit, preserves original commits, non-linear +- **Rebase preserving merges**: `rtk git pull --rebase=merges` keeps intentional local merge commits during the replay +- **Stage without committing**: `rtk git pull --squash` collapses incoming commits into staged changes; you write the message - **Merge strategy**: Git 2.34+ defaults to `ort` (`recursive` is now an alias for it). Strategy options such as `-X ours`, `-X theirs`, `-X ignore-space-change` pass through unchanged. - **Submodules**: `--recurse-submodules` only fetches submodules already checked out. Newly added ones are not initialized — use the `git-submodules` skill for those. @@ -37,7 +37,7 @@ Highest wins: 4. `branch.autoSetupRebase` (set automatically when the tracking branch was created) ```bash -git config pull.ff only # deterministic default across Git versions -git config --global pull.rebase true -git config branch.develop.rebase false # develop always merges, regardless of the global default +rtk git config pull.ff only # deterministic default across Git versions +rtk git config --global pull.rebase true +rtk git config branch.develop.rebase false # develop always merges, regardless of the global default ``` diff --git a/plugins/git/.apm/skills/git-remotes/references/push.md b/plugins/git/.apm/skills/git-remotes/references/push.md index dd032fb..fecc521 100644 --- a/plugins/git/.apm/skills/git-remotes/references/push.md +++ b/plugins/git/.apm/skills/git-remotes/references/push.md @@ -9,14 +9,14 @@ source_keys: Default: safe push to the same-named branch on the remote. -- **Force-push**: never bare `--force`. Use `git push --force-with-lease --force-if-includes `, after the SKILL.md Step 1 gate. -- **Basic**: `git push ` -- **Set upstream**: `git push -u ` — push and configure tracking -- **Multi-remote**: push sequentially (`git push origin develop`, `git push staging develop`), or add a second push URL with `git remote set-url --add ` to reach both in one command -- **Delete a remote branch**: `git push --delete ` — clearer than the `:` form -- **Bulk**: `git push --all` (all local branches), `git push --tags` (all tags), `git push origin ` (one tag) -- **Delete remote branches with no local counterpart**: `git push --prune origin 'refs/heads/*:refs/heads/*'` -- **Force only part of a multi-ref push**: prefix the one refspec that needs it with `+` — `git push origin +release develop` forces `release` while safe-pushing `develop`. A `+` prefix is a force-push and passes the SKILL.md Step 1 gate like any other. +- **Force-push**: never bare `--force`. Use `rtk git push --force-with-lease --force-if-includes `, after the SKILL.md Step 1 gate. +- **Basic**: `rtk git push ` +- **Set upstream**: `rtk git push -u ` — push and configure tracking +- **Multi-remote**: push sequentially (`rtk git push origin develop`, `rtk git push staging develop`), or add a second push URL with `rtk git remote set-url --add ` to reach both in one command +- **Delete a remote branch**: `rtk git push --delete ` — clearer than the `:` form +- **Bulk**: `rtk git push --all` (all local branches), `rtk git push --tags` (all tags), `rtk git push origin ` (one tag) +- **Delete remote branches with no local counterpart**: `rtk git push --prune origin 'refs/heads/*:refs/heads/*'` +- **Force only part of a multi-ref push**: prefix the one refspec that needs it with `+` — `rtk git push origin +release develop` forces `release` while safe-pushing `develop`. A `+` prefix is a force-push and passes the SKILL.md Step 1 gate like any other. ## Refspec syntax — `[+][:]` @@ -48,19 +48,19 @@ Two mitigations: # Option 1 — dedicated push-only remote: background tools fetch `origin`, you push # through a separate remote that nothing else touches, so its tracking ref can't be # poisoned by an unrelated fetch. -git remote add origin-push $(git config remote.origin.url) -git push --force-with-lease origin-push +rtk git remote add origin-push $(rtk git config remote.origin.url) +rtk git push --force-with-lease origin-push # Option 2 — explicit SHA via a local tag, unaffected by tracking-branch state -git fetch -git tag base master -git rebase -i master -git push --force-with-lease=master:base master:master +rtk git fetch +rtk git tag base master +rtk git rebase -i master +rtk git push --force-with-lease=master:base master:master ``` `--force-if-includes` adds a second check on top of bare `--force-with-lease`: it verifies the remote-tracking tip actually appears in your local branch's reflog, i.e. you genuinely integrated it before rewriting. It is a no-op without `--force-with-lease`, and has no effect with the `--force-with-lease=:` form, which already pins an exact SHA. -Safest combination: `git push --force-with-lease --force-if-includes origin`. +Safest combination: `rtk git push --force-with-lease --force-if-includes origin`. ## Server-side policy diff --git a/plugins/git/.apm/skills/git-remotes/references/remote-config.md b/plugins/git/.apm/skills/git-remotes/references/remote-config.md index 5d44eef..3470543 100644 --- a/plugins/git/.apm/skills/git-remotes/references/remote-config.md +++ b/plugins/git/.apm/skills/git-remotes/references/remote-config.md @@ -9,31 +9,31 @@ source_keys: Which remotes exist, where they point, and what they track. -`git remote show ` needs network access — use `-n` for cached data offline, or `git remote -v`, which lists URLs without querying. +`rtk git remote show ` needs network access — use `-n` for cached data offline, or `rtk git remote -v`, which lists URLs without querying. ## Add, remove, rename, inspect -- **Add**: `git remote add `, or `-f` to fetch immediately -- **Remove**: `git remote remove ` — deletes the remote, all its tracking refs, and its config -- **Rename**: `git remote rename ` -- **Inspect**: `git remote -v` (URLs, offline) or `git remote show ` (live tracking status) -- **Effective URLs**: `git remote get-url ` shows the URL after `insteadOf` rewrites; `git remote get-url --push --all ` lists every push URL +- **Add**: `rtk git remote add `, or `-f` to fetch immediately +- **Remove**: `rtk git remote remove ` — deletes the remote, all its tracking refs, and its config +- **Rename**: `rtk git remote rename ` +- **Inspect**: `rtk git remote -v` (URLs, offline) or `rtk git remote show ` (live tracking status) +- **Effective URLs**: `rtk git remote get-url ` shows the URL after `insteadOf` rewrites; `rtk git remote get-url --push --all ` lists every push URL ## Tracking, mirroring, housekeeping -- **Track one branch**: `git remote add -t ` (repeatable); `--no-tags` suppresses tag import entirely +- **Track one branch**: `rtk git remote add -t ` (repeatable); `--no-tags` suppresses tag import entirely - **Mirror**: `--mirror=fetch` mirrors all refs locally (bare repos only); `--mirror=push` makes every push behave like `--mirror` -- **Prune stale tracking refs without fetching**: `git remote prune `, with `--dry-run` to preview -- **Default branch pointer**: `git remote set-head -a` (auto-detect, needs a prior fetch), `... ` (explicit), `... -d` (delete `refs/remotes//HEAD`) +- **Prune stale tracking refs without fetching**: `rtk git remote prune `, with `--dry-run` to preview +- **Default branch pointer**: `rtk git remote set-head -a` (auto-detect, needs a prior fetch), `... ` (explicit), `... -d` (delete `refs/remotes//HEAD`) ## `set-url` — full form ```bash -git remote set-url # replace the first fetch URL -git remote set-url # replace only the URL matching regex -git remote set-url --push # change push URL only (must point at same repo) -git remote set-url --add # add an extra push URL (push to multiple remotes) -git remote set-url --delete # remove URLs matching regex +rtk git remote set-url # replace the first fetch URL +rtk git remote set-url # replace only the URL matching regex +rtk git remote set-url --push # change push URL only (must point at same repo) +rtk git remote set-url --add # add an extra push URL (push to multiple remotes) +rtk git remote set-url --delete # remove URLs matching regex ``` `--push` changes only where pushes go — fetch and push URLs must still reference the same repository. For genuine fetch-from-A / push-to-B workflows, use two separate named remotes instead; `--push` cannot do this. diff --git a/plugins/git/.apm/skills/git-submodules/SKILL.md b/plugins/git/.apm/skills/git-submodules/SKILL.md index 55d65f2..f3969f7 100644 --- a/plugins/git/.apm/skills/git-submodules/SKILL.md +++ b/plugins/git/.apm/skills/git-submodules/SKILL.md @@ -9,6 +9,7 @@ description: > Not the superproject's own remotes -> `git-remotes`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-submodule-docs diff --git a/plugins/git/.apm/skills/git-workflow/SKILL.md b/plugins/git/.apm/skills/git-workflow/SKILL.md index 8f2f871..557f81f 100644 --- a/plugins/git/.apm/skills/git-workflow/SKILL.md +++ b/plugins/git/.apm/skills/git-workflow/SKILL.md @@ -8,6 +8,7 @@ description: > agent caller -> `git-orchestrate`. Not Gitea -> `gitea-workflow`. metadata: + version: "1.0.0" category: git source_keys: - nvie-gitflow-post diff --git a/plugins/git/.apm/skills/git-worktrees/SKILL.md b/plugins/git/.apm/skills/git-worktrees/SKILL.md index 15a89fc..0e6c9c7 100644 --- a/plugins/git/.apm/skills/git-worktrees/SKILL.md +++ b/plugins/git/.apm/skills/git-worktrees/SKILL.md @@ -8,6 +8,7 @@ description: > Not interactive multi-step git guidance -> `git-workflow`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-worktree-docs @@ -16,7 +17,7 @@ metadata: ## Gotchas - **A branch can be checked out in only one worktree at a time.** `git worktree add` on an already-checked-out branch fails; `--force` is the only override, so use it only deliberately. -- **Never `rm -rf` a worktree directory.** That strands metadata in `$GIT_DIR/worktrees/`. Use `git worktree remove`, or `git worktree prune` afterwards. +- **Never `rm -rf` a worktree directory.** That strands metadata in `$GIT_DIR/worktrees/`. Use `rtk git worktree remove`, or `rtk git worktree prune` afterwards. - **Submodules break worktree support.** A worktree containing submodules cannot be moved at all, and needs `--force` to remove. - **`extensions.worktreeConfig = true` is a one-way door.** Without it, `git config --worktree` errors; with it, that flag writes to the worktree's own `config.worktree` file, and `core.bare`/`core.worktree` are forced there too. It also breaks older Git. Leave it off unless per-worktree config is needed. @@ -24,19 +25,19 @@ metadata: | Operation | Run | |---|---| -| Create on a branch that already exists locally | `git worktree add ` | -| Create on a new branch | `git worktree add -b ` | -| Create on the branch named after the path basename | `git worktree add ` — checks that branch out if it exists, else creates it from HEAD | -| Create and reset an existing branch to HEAD — discards its commits | `git worktree add -B ` | -| Create a local branch tracking a remote one | `git worktree add --track -b /` — always correct. `git worktree add ` expands to exactly this, but **only** under the conditions in `references/worktrees.md` | -| Throwaway experiment, no branch | `git worktree add -d ` — detached HEAD | +| Create on a branch that already exists locally | `rtk git worktree add ` | +| Create on a new branch | `rtk git worktree add -b ` | +| Create on the branch named after the path basename | `rtk git worktree add ` — checks that branch out if it exists, else creates it from HEAD | +| Create and reset an existing branch to HEAD — discards its commits | `rtk git worktree add -B ` | +| Create a local branch tracking a remote one | `rtk git worktree add --track -b /` — always correct. `git worktree add ` expands to exactly this, but **only** under the conditions in `references/worktrees.md` | +| Throwaway experiment, no branch | `rtk git worktree add -d ` — detached HEAD | | **Never** `git worktree add /` | That ref resolves, so the shortcut never fires and you get **a detached HEAD, no branch, no upstream**. Commits there go unreachable once HEAD moves, and `git push` needs an explicit refspec. Use the tracking row above | -| List | `git worktree list -v`, or `--porcelain -z` to parse | -| Lock or unlock | `git worktree lock [--reason ] ` / `git worktree unlock ` | -| Move | `git worktree move ` | -| Remove | `git worktree remove ` | -| Prune stale metadata | `git worktree prune --dry-run`, then without the flag | -| Repair after a manual move | `git worktree repair` — in the main worktree if *it* moved, or inside a linked worktree that moved. `git worktree repair ...` — from any worktree, naming each moved linked worktree's new path | +| List | `rtk git worktree list -v`, or `--porcelain -z` to parse | +| Lock or unlock | `rtk git worktree lock [--reason ] ` / `rtk git worktree unlock ` | +| Move | `rtk git worktree move ` | +| Remove | `rtk git worktree remove ` | +| Prune stale metadata | `rtk git worktree prune --dry-run`, then without the flag | +| Repair after a manual move | `rtk git worktree repair` — in the main worktree if *it* moved, or inside a linked worktree that moved. `rtk git worktree repair ...` — from any worktree, naming each moved linked worktree's new path | If the operation needs anything the table does not carry — the full `add` flag table, orphan branches, sparse-checkout, locking for removable media, remote @@ -48,7 +49,7 @@ Gates: - **`move`, `remove` — the main worktree cannot be moved or removed.** Only linked worktrees, the ones `git worktree add` created, are candidates. - **`add`, `move`, `remove` — escalate force flags one step at a time.** `-f` overrides a safeguard such as an unclean tree; `move` and `remove` need `-ff` on top of that when the worktree is locked. Confirm with the user before either — both discard state. -- **`add` — lock at creation, not after.** `git worktree add --lock` is atomic, where add-then-`lock` leaves a window in which the worktree is unprotected. +- **`add` — lock at creation, not after.** `rtk git worktree add --lock` is atomic, where add-then-`lock` leaves a window in which the worktree is unprotected. ## Step 2 — Report @@ -61,6 +62,6 @@ worktrees: lock_reason: ``` -Derive those fields from `git worktree list --porcelain -z`. For a single +Derive those fields from `rtk git worktree list --porcelain -z`. For a single operation, report its outcome instead — `created: true`, `moved: true`, `removed: true`. diff --git a/plugins/git/.apm/skills/git-worktrees/references/worktrees.md b/plugins/git/.apm/skills/git-worktrees/references/worktrees.md index c4d9b22..5894bd7 100644 --- a/plugins/git/.apm/skills/git-worktrees/references/worktrees.md +++ b/plugins/git/.apm/skills/git-worktrees/references/worktrees.md @@ -23,17 +23,17 @@ that are usable. ## `add` forms ```bash -git worktree add # exists locally: check it out — non-destructive -git worktree add -b # create a new branch; fails if it exists -git worktree add # branch named after $(basename ): checked out +rtk git worktree add # exists locally: check it out — non-destructive +rtk git worktree add -b # create a new branch; fails if it exists +rtk git worktree add # branch named after $(basename ): checked out # if it exists, else created from HEAD -git worktree add -B # create the branch, or reset an existing one to HEAD, +rtk git worktree add -B # create the branch, or reset an existing one to HEAD, # discarding the commits it carried -git worktree add --track -b / +rtk git worktree add --track -b / # new local branch tracking the remote — always works -git worktree add # absent locally and in exactly one remote: +rtk git worktree add # absent locally and in exactly one remote: # Git expands this to the --track -b form above -git worktree add -d # detached HEAD, no branch +rtk git worktree add -d # detached HEAD, no branch ``` The same `git worktree add ` spelling appears twice above and does two @@ -65,19 +65,19 @@ Using `-` as `` is shorthand for `@{-1}` (the branch checked out bef ## New unborn branch ```bash -git worktree add --orphan -b +rtk git worktree add --orphan -b ``` Creates an empty branch with no commits. **`--orphan` needs Git 2.42 or later** — it was added upstream in 2.42, and on 2.39.5 this fails with `error: unknown option 'orphan'` and exit 129. -Check `git --version` before reaching for it. +Check `rtk git --version` before reaching for it. Fallback on older Git, verified on 2.39.5 — detach first, then orphan the linked worktree in place, which leaves the main worktree on its own branch throughout: ```bash -git worktree add -d # linked worktree, detached HEAD +rtk git worktree add -d # linked worktree, detached HEAD cd -git switch --orphan # unborn branch: empty index, empty working tree +rtk git switch --orphan # unborn branch: empty index, empty working tree ``` `git worktree list` then shows the new worktree at `0000000 []` until its first commit. @@ -88,25 +88,25 @@ the disruption worktrees exist to avoid. Suppress the initial checkout to configure sparse-checkout first: ```bash -git worktree add --no-checkout ../sparse main +rtk git worktree add --no-checkout ../sparse main cd ../sparse -git sparse-checkout init --cone -git sparse-checkout set src/ -git checkout main +rtk git sparse-checkout init --cone +rtk git sparse-checkout set src/ +rtk git checkout main ``` ## Worktree on removable media ```bash -git worktree add --lock --reason "external SSD" -git worktree unlock # when reconnected +rtk git worktree add --lock --reason "external SSD" +rtk git worktree unlock # when reconnected ``` ## Remote-branch disambiguation ```bash -git worktree add --track -b / # explicit: no guessing at all -git worktree add # shortcut: needs one clear remote +rtk git worktree add --track -b / # explicit: no guessing at all +rtk git worktree add # shortcut: needs one clear remote ``` **The bare-name shortcut needs exactly one remote.** It fires only when `` is not found locally, none of `-b`/`-B`/`--detach` were given, and a tracking branch of that name exists in @@ -122,10 +122,10 @@ exactly one remote has it, and marks that branch as upstream. Its default comes ## Repair after a manual move ```bash -git worktree repair # the MAIN worktree moved: run it there to reconnect every linked +rtk git worktree repair # the MAIN worktree moved: run it there to reconnect every linked # worktree back to the main worktree -git worktree repair # a LINKED worktree moved: run it inside that recently-moved worktree -git worktree repair ... # reconnect a specific linked worktree — runnable from any worktree, +rtk git worktree repair # a LINKED worktree moved: run it inside that recently-moved worktree +rtk git worktree repair ... # reconnect a specific linked worktree — runnable from any worktree, # naming each moved tree's new path ``` @@ -133,10 +133,10 @@ Which form applies depends on what moved: | What moved | Remedy | |---|---| -| The main worktree (or bare repo) | `git worktree repair` in the main worktree | -| One linked worktree | `git worktree repair` inside that worktree | -| Several linked worktrees | `git worktree repair ...` from any worktree, listing each new path | -| Both main and linked worktrees | `git worktree repair ...` in the main worktree, naming each linked worktree's new path — this restores the connections in both directions | +| The main worktree (or bare repo) | `rtk git worktree repair` in the main worktree | +| One linked worktree | `rtk git worktree repair` inside that worktree | +| Several linked worktrees | `rtk git worktree repair ...` from any worktree, listing each new path | +| Both main and linked worktrees | `rtk git worktree repair ...` in the main worktree, naming each linked worktree's new path — this restores the connections in both directions | Only the no-argument form is tied to the current directory. The `...` form is not — it reestablishes the connection to every path you name, run from any worktree. @@ -157,20 +157,20 @@ reestablishes the connection to every path you name, run from any worktree. untouched throughout: ```bash -git worktree add -b emergency-fix ../temp main +rtk git worktree add -b emergency-fix ../temp main cd ../temp # fix, then commit -git commit -a -m "fix: critical production bug" +rtk git commit -a -m "fix: critical production bug" cd - -git worktree remove ../temp +rtk git worktree remove ../temp ``` **Review a PR branch alongside your own work** — both branches stay checked out, so there is no context switch: ```bash -git worktree add ../review-pr-123 origin/feature-xyz # detached HEAD — read-only review -git worktree add --track -b feature-xyz ../review-pr-123 origin/feature-xyz # if you will commit +rtk git worktree add ../review-pr-123 origin/feature-xyz # detached HEAD — read-only review +rtk git worktree add --track -b feature-xyz ../review-pr-123 origin/feature-xyz # if you will commit # open ../review-pr-123 in a second editor window or terminal ``` diff --git a/plugins/git/.apm/skills/pc-author/SKILL.md b/plugins/git/.apm/skills/pc-author/SKILL.md index b1d1db8..8b7c411 100644 --- a/plugins/git/.apm/skills/pc-author/SKILL.md +++ b/plugins/git/.apm/skills/pc-author/SKILL.md @@ -6,6 +6,7 @@ description: > shellcheck"). Not running, installing, or updating hooks -> `pc-run`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: devtools source_keys: - context7-pre-commit-com diff --git a/plugins/git/.apm/skills/pc-author/references/create-config.md b/plugins/git/.apm/skills/pc-author/references/create-config.md index 8adfdfb..c9ef9fd 100644 --- a/plugins/git/.apm/skills/pc-author/references/create-config.md +++ b/plugins/git/.apm/skills/pc-author/references/create-config.md @@ -15,7 +15,7 @@ flow's file is not needed here. `SKILL.md`'s three common gates still apply. inferring them from the project's name or README: ```bash - git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn + rtk git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn ``` 2. Read `references/hooks-by-language.md` and map the detected extensions to recommended hooks. diff --git a/plugins/git/.apm/skills/pc-author/references/modify-config.md b/plugins/git/.apm/skills/pc-author/references/modify-config.md index 83a0ae6..bfd268f 100644 --- a/plugins/git/.apm/skills/pc-author/references/modify-config.md +++ b/plugins/git/.apm/skills/pc-author/references/modify-config.md @@ -17,7 +17,7 @@ Read the existing `.pre-commit-config.yaml` before editing. Note any stale `rev` 1. Run a shallow extension scan, so the addition is judged against the languages actually present: ```bash - git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn + rtk git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn ``` 2. Read `references/hooks-by-language.md` for the correct repo URL, `rev` and recommended args diff --git a/plugins/git/.apm/skills/pc-run/SKILL.md b/plugins/git/.apm/skills/pc-run/SKILL.md index 82ebc7a..c81484a 100644 --- a/plugins/git/.apm/skills/pc-run/SKILL.md +++ b/plugins/git/.apm/skills/pc-run/SKILL.md @@ -8,6 +8,7 @@ description: > compatibility: Requires pre-commit installed and available on PATH. metadata: + version: "1.0.0" category: devtools source_keys: - context7-pre-commit-com @@ -20,7 +21,7 @@ allowed-tools: Bash Read - The `SKIP` env var takes exact hook `id` values, comma-separated with no spaces: `SKIP=check-yaml,gitleaks git commit -m "msg"`. A space after a comma silently skips nothing instead of erroring. - Never bypass a failing hook with `git commit --no-verify` (or `-n`). Hooks are the automated QA gate, so a bypassed commit pushes the failure downstream where it costs more — diagnose it instead. -- `- files were modified by this hook` is not a bug. A fixer hook rewrote a staged file, so the staged snapshot is stale and the commit is blocked on purpose. Re-stage and re-run the same commit: `git add -u && git commit`. Do NOT reach for `pre-commit install -f` here — it overwrites `.git/hooks/` and has nothing to do with re-staging. +- `- files were modified by this hook` is not a bug. A fixer hook rewrote a staged file, so the staged snapshot is stale and the commit is blocked on purpose. Re-stage and re-run the same commit: `rtk git add -u && rtk git commit`. Do NOT reach for `pre-commit install -f` here — it overwrites `.git/hooks/` and has nothing to do with re-staging. ## Gate — `pre-commit clean` diff --git a/plugins/git/.apm/skills/pc-run/references/failure-patterns.md b/plugins/git/.apm/skills/pc-run/references/failure-patterns.md index 8931ebf..5369f84 100644 --- a/plugins/git/.apm/skills/pc-run/references/failure-patterns.md +++ b/plugins/git/.apm/skills/pc-run/references/failure-patterns.md @@ -14,8 +14,8 @@ Cause: A fixer hook (e.g. `trailing-whitespace`, `end-of-file-fixer`, `pretty-fo Fix: Re-stage and recommit. ```bash -git add -u -git commit -m "same message" +rtk git add -u +rtk git commit -m "same message" ``` Do NOT reach for `pre-commit install -f` here. That flag overwrites existing hook files in `.git/hooks/`; it has nothing to do with re-staging. diff --git a/plugins/git/README.md b/plugins/git/README.md new file mode 100644 index 0000000..54a7d53 --- /dev/null +++ b/plugins/git/README.md @@ -0,0 +1,51 @@ +# git + +Skills and agents for working with a local Git clone over the git wire protocol, and for authoring and running the pre-commit hooks that guard it. + +## Install + +**Claude Code:** + +```bash +claude plugin marketplace add / +claude plugin install git@ +``` + +**GitHub Copilot CLI:** + +```bash +copilot plugin marketplace add / +copilot plugin install git +``` + +**Local (development):** + +```bash +# Claude Code +claude --plugin-dir ./plugins/git + +# GitHub Copilot CLI +copilot plugin install ./plugins/git +``` + +## Conventions + +Every skill in this plugin runs local git commands through the org's `rtk` wrapper, never bare `git` — see `git-commits/SKILL.md`'s Gotchas and `git-workflow/references/hard-rules.md`. Issue #113 made that rule precise for skill *prose*, where a `git ` mention can be either an instruction to execute or just a reference to the concept: + +- **Executable, instructed commands** — anything telling the agent to run a command right now (an imperative step, a dispatch-table "Run" cell, a fenced code-block procedure) — use `rtk git`. Example: `rtk git push -u origin `. +- **Illustrative or referential mentions** — naming a flag's behavior, quoting a doc's own heading, describing what a command does in the abstract, or warning against an anti-pattern — stay bare `git`. Example: "`git switch` refuses rather than clobbering conflicting local edits." + +This applies within this plugin's own skill files (`git-*`, `pc-*`) — it does not generalize to other plugins. The `gitea-*` skills, for instance, talk to a remote Gitea server through the `gitea` MCP tools and contain no `git`/`rtk` mentions at all; the distinction has nothing to hold onto there. + +## Contents + +| Component | Path | Description | +|---|---|---| +| Skills | `.apm/skills/` → `skills/` | `git-commits`, `git-branches`, `git-history`, `git-remotes`, `git-submodules`, `git-workflow`, `git-worktrees`, `pc-author`, `pc-run` | +| Agents | `.apm/agents/` → `agents/` | `git-orchestrate` | + +`.apm/` is the authoring source; `skills/`/`agents/` are the generated mirrors plugin hosts scan (ADR-0017) — edit only under `.apm/`. + +## Author + +Defame1297 -- 2.43.0 From 09eea5e7ab9b22dcb64802eba4683cacf2ac1cd8 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:37:03 +0000 Subject: [PATCH 04/12] fix(skill-audit): flag a changed provenance claim, not just its shape validate-provenance.sh checked that a sources.md entry was internally consistent -- slugs resolve, Contributing files exist, back-references match -- but never whether the asserted contribution was true. A retrofit once turned an honest hedge into a false confident claim and every existing check passed it silently. A literal-filename cross-check (flag a description naming a .md file absent from Contributing files) was tried and rejected: 3/95 flagged against the real corpus, all three false positives, and it would not have caught the actual bug -- the bad description never named a literal filename. No bash script can verify semantic truth, so the fix uses what git can reliably detect -- a changed field -- purely as a trigger for what can verify semantics: the auditor reading the files. New check 9 flags (INFO only, never FAIL) any Description or Contributing-files text change against a base ref (default: merge-base with origin/main, overridable via --base-ref). A slug absent at the base ref is a creation, not a change, and is not flagged. skill-audit's rubric now tells the auditor a check-9 INFO means open the named files and verify by reading, not just relay it. skill-author's retrofit checklist gained a matching authoring-time guardrail: don't upgrade a hedge into a confident claim without re-reading the source first. 8 new bats tests (73 total, 0 failures). Fixes: #118 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- .../references/validation-scripts.md | 13 + .../scripts/validate-provenance.sh | 222 +++++++++++++++++- .../tests/validate-provenance.bats | 175 +++++++++++++- .../skill-author/references/retrofit.md | 10 + 4 files changed, 404 insertions(+), 16 deletions(-) diff --git a/plugins/kyberforge/.apm/skills/skill-audit/references/validation-scripts.md b/plugins/kyberforge/.apm/skills/skill-audit/references/validation-scripts.md index a1ddb24..1c50e36 100644 --- a/plugins/kyberforge/.apm/skills/skill-audit/references/validation-scripts.md +++ b/plugins/kyberforge/.apm/skills/skill-audit/references/validation-scripts.md @@ -105,6 +105,19 @@ Three ways to read the result wrong: is not a directory, a directory holding no `SKILL.md`, a missing or extra argument, and an absent `python3` all exit **2** with a message on stderr. Exit 2 means the script never ran — report it as an unaudited dimension, never as a pass and never as a finding. Exit 1 is findings. +- **A check-9 INFO — `'' changed for '' since ` — means go read, not just relay.** + Check 9 diffs the current `references/sources.md` against a base ref (default: the merge base with + `origin/main`) and flags a slug whose `Description` or `Contributing files` text differs. It is + structurally incapable of telling you whether the new wording is still *true* — it only detects + that the text changed — so when this INFO fires, open the Contributing files it names and the + document named in that slug's `Research doc:` field, and confirm by reading whether the (possibly + strengthened) claim genuinely holds. This is the one provenance finding this script cannot verify + for you: every other check here is a structural fact you can relay as-is, but check 9's job is + only to tell you *where* to spend that reading effort, not to replace it. Acknowledging the INFO + without opening those files is not auditing it. A single INFO naming "no base ref could be + resolved" or "no repo root above the skill directory" is the same graceful-skip pattern as every + other check here that cannot run — treat it as an unaudited dimension for that reason, not as a + finding about the skill. - **`vale` reports `0 files`.** Treat the pass as NOT RUN, not as clean, and fall back to full Step 3 judgment for the dimensions it would have covered. The bundled `Kyberforge` style is scoped by glob in `assets/vale/.vale.ini`; a file outside those globs is silently not linted. diff --git a/plugins/kyberforge/.apm/skills/skill-audit/scripts/validate-provenance.sh b/plugins/kyberforge/.apm/skills/skill-audit/scripts/validate-provenance.sh index 4ed3629..9cec436 100755 --- a/plugins/kyberforge/.apm/skills/skill-audit/scripts/validate-provenance.sh +++ b/plugins/kyberforge/.apm/skills/skill-audit/scripts/validate-provenance.sh @@ -3,12 +3,19 @@ set -euo pipefail usage() { cat < +Usage: validate-provenance.sh [--base-ref=] Validate that a skill's sources provenance chain is complete and internally consistent. Arguments: - skill-dir Path to the skill directory to validate. + skill-dir Path to the skill directory to validate. + --base-ref=REF Git ref to diff references/sources.md against for check 9. + Defaults to \`git merge-base HEAD origin/main\`. Override this + when origin/main is not the right comparison point (a fork, + a long-lived branch, a mirror with a different remote name). + The VALIDATE_PROVENANCE_BASE_REF environment variable is an + equivalent, lower-precedence way to set it — the flag wins + if both are given. Exit codes: 0 All checks passed (or nothing to validate) @@ -38,6 +45,12 @@ Checks performed: resolved; a path that still does not resolve is reported as an INFO saying checks 7 and 8 did not run, never skipped silently. 8 Extracted non-(none) slug in research doc present in sources.md + 9 Description or Contributing files text changed since --base-ref (INFO + only — a bash script cannot verify the claim is still TRUE, only that it + changed; the auditor reads the named files to check that). A slug absent + at the base ref is a creation, not a change, and is not flagged. When the + base ref cannot be resolved at all, this is announced as ONE INFO for the + whole check, never a silent skip. Checks 7 and 8 apply ONLY when the Research doc value names a research SOURCE INDEX — a file whose basename is sources.md, whose H2 headings ARE source @@ -52,13 +65,31 @@ if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then exit 0 fi +# --base-ref= is the only recognised flag, for check 9's base-ref +# override. It is pulled out before the positional-count checks below so it +# never counts against them — a caller passing it alongside skill-dir sees +# the same argument-count behaviour as one who does not pass it at all, and a +# genuinely extra positional argument is still rejected. +declare -a POSITIONAL_ARGS=() +BASE_REF_OVERRIDE="" +for arg in "$@"; do + case "$arg" in + --base-ref=*) + BASE_REF_OVERRIDE="${arg#--base-ref=}" + ;; + *) + POSITIONAL_ARGS+=("$arg") + ;; + esac +done + # Usage and environment problems exit 2, findings exit 1. See the usage text # above for why the two must not share a code. This is a deliberate divergence # from validate.sh, which has no 2 tier: validate.sh always prints PASS lines, # so a usage error there is visibly not a findings report. This script prints # NOTHING on a clean run, so exit 1 plus empty stdout was the only signal a # caller got either way. -if [[ $# -lt 1 ]]; then +if [[ ${#POSITIONAL_ARGS[@]} -lt 1 ]]; then echo "Error: skill-dir is required." >&2 echo "" >&2 usage >&2 @@ -67,13 +98,20 @@ fi # Extra positional arguments were silently dropped, so a typo'd flag or a second # path looked like it had been honoured. -if [[ $# -gt 1 ]]; then - echo "Error: expected exactly one argument, got $#: $*" >&2 +if [[ ${#POSITIONAL_ARGS[@]} -gt 1 ]]; then + echo "Error: expected exactly one argument, got ${#POSITIONAL_ARGS[@]}: ${POSITIONAL_ARGS[*]}" >&2 echo "" >&2 usage >&2 exit 2 fi +SKILL_DIR_ARG="${POSITIONAL_ARGS[0]}" + +# The flag wins over the environment variable when both are given; either is +# empty-string when unset, and an empty string tells the Python body to fall +# back to `git merge-base HEAD origin/main`. +BASE_REF="${BASE_REF_OVERRIDE:-${VALIDATE_PROVENANCE_BASE_REF:-}}" + # python3 is a HARD dependency. Without this preflight a missing interpreter # produced 'line NN: python3: command not found' and exit 127 — an exit code no # caller maps to anything, from a message that names this script's line number @@ -91,24 +129,25 @@ fi # references/validation-scripts.md explicitly told the auditor to read as a # pass. A typo'd target was therefore indistinguishable from a clean skill. # vale-wrap.sh hard-errors on a nonexistent path for exactly this reason. -if [[ ! -d "$1" ]]; then - echo "Error: not a directory: $1" >&2 +if [[ ! -d "$SKILL_DIR_ARG" ]]; then + echo "Error: not a directory: $SKILL_DIR_ARG" >&2 echo " Why: a nonexistent target would otherwise report a silent pass." >&2 echo " Fix: pass the path of the skill directory to validate." >&2 exit 2 fi -if [[ ! -f "$1/SKILL.md" ]]; then - echo "Error: not a skill directory (no SKILL.md): $1" >&2 +if [[ ! -f "$SKILL_DIR_ARG/SKILL.md" ]]; then + echo "Error: not a skill directory (no SKILL.md): $SKILL_DIR_ARG" >&2 echo " Why: a directory with no SKILL.md has no provenance chain to validate, and reporting that as a pass hides the wrong-target mistake." >&2 echo " Fix: pass the skill directory itself, not its parent or its references/ subdirectory." >&2 exit 2 fi -python3 -u - "$1" <<'PYTHON' +python3 -u - "$SKILL_DIR_ARG" "$BASE_REF" <<'PYTHON' import sys import os import re +import subprocess # Output is UTF-8 for the same reason input is: under LC_ALL=C the streams # default to ASCII, and every finding this script prints contains an em dash. @@ -125,6 +164,11 @@ skill_dir = os.path.abspath(sys.argv[1]) sources_md_path = os.path.join(skill_dir, "references", "sources.md") refs_dir = os.path.join(skill_dir, "references") +# Empty string (the shell side passes "" when neither --base-ref nor +# VALIDATE_PROVENANCE_BASE_REF was given) means: resolve the default via +# `git merge-base HEAD origin/main` at check-9 time, below. +base_ref_override = sys.argv[2] if len(sys.argv) > 2 else "" + # --- Helpers --- # The trailing character class used to be CONSUMING — `[^`\n]` — so a @@ -444,6 +488,81 @@ def find_repo_root(start_dir): return None current = parent +# --- Check 9 helpers --------------------------------------------------- +# Check 9 needs a raw field VALUE (as text, to diff against an earlier +# version), not the parsed structure parse_contributing_files() and +# parse_status() return — a Contributing files list that reordered its +# entries without changing them is not what this check is looking for, but +# neither is normalizing so hard that a genuine rewrite disappears. Raw text, +# whitespace-normalized, is the middle ground. + +def run_git(args, cwd): + """Run `git ` in cwd. Returns (returncode, stdout, stderr) — never + raises, so a missing git binary or an unexpected OSError is just another + non-zero result the caller folds into "could not run", not a crash.""" + try: + result = subprocess.run( + ["git"] + args, cwd=cwd, capture_output=True, text=True, + encoding="utf-8", errors="replace" + ) + return result.returncode, result.stdout, result.stderr + except OSError as exc: + return 1, "", str(exc) + +def ref_exists(ref, cwd): + """True when ref resolves to a commit in the repo at cwd.""" + rc, _out, _err = run_git(["rev-parse", "--verify", "--quiet", ref + "^{commit}"], cwd) + return rc == 0 + +def find_slug_block(content, slug): + """The raw text of a '## ' entry's body, or None if no such H2.""" + pattern = re.compile( + r'^## ' + re.escape(slug) + r'\s*\n(.*?)(?=^## |\Z)', + re.MULTILINE | re.DOTALL + ) + m = pattern.search(content) + return m.group(1) if m else None + +def parse_field_raw(content, slug, field_name): + """Raw text of a '**:**' field under a slug H2. + + Mirrors the two authored shapes parse_contributing_files() and + parse_status() already handle (inline value on the same line, or a + bare heading followed by '- ' bullets), but returns text rather than a + parsed structure, because check 9 diffs wording, not semantics. + + Returns None when the H2 itself is absent (the slug did not exist at + this content's revision) or the field is absent — both read as "no + earlier claim to compare against" to the caller, which is deliberate: + a field appearing for the first time is a creation, not a change. + """ + block = find_slug_block(content, slug) + if block is None: + return None + inline_re = re.compile(r'^\- \*\*' + re.escape(field_name) + r':\*\* (.+)$', re.MULTILINE) + im = inline_re.search(block) + if im: + return im.group(1).strip() + heading_re = re.compile(r'^\*\*' + re.escape(field_name) + r':\*\*\s*$', re.MULTILINE) + hm = heading_re.search(block) + if not hm: + return None + lines = [] + for line in block[hm.end():].splitlines(): + line = line.strip() + if not line: + if lines: + break + continue + if not line.startswith("- "): + break + lines.append(line[2:].strip()) + return ", ".join(lines) if lines else None + +def normalize_field_text(value): + """Collapse whitespace so reformatting alone never registers as a change.""" + return re.sub(r'\s+', ' ', value).strip() + findings = [] has_fail = False @@ -859,6 +978,89 @@ for rd_abs, (rd_rel, known_slugs, rd_content) in research_docs_seen.items(): f"Add '## {rd_slug}' to references/sources.md or mark it as '(none)' in the research doc's Contributing files." ) +# --- Check 9: Description / Contributing files changed since --base-ref --- +# A structural fact — the field's TEXT differs from an earlier revision — is +# all git can tell us. Whether the (possibly stronger) new wording is still +# TRUE is a semantic question no parser here can answer; that is what sent +# the earlier literal-text approaches (flagging a named-but-missing filename) +# to 3/3 false positives against the real corpus without even catching the +# bug that motivated this check. So check 9 does the one thing git reliably +# can: detect the change, and hand the auditor the slug and field to go read, +# never a verdict on the claim itself. Always INFO, never FAIL. +if repo_root is None: + emit_info( + "Check 9 skipped — no repo root above the skill directory", + "references/sources.md", + "No ancestor of the skill directory contains a .git entry, so there is no git history to diff " + "references/sources.md against. Check 9 did not run for any slug in this skill. " + "Run this script against a skill inside a checkout to get this check." + ) +else: + resolved_base_ref = base_ref_override.strip() + resolve_error = None + if not resolved_base_ref: + rc, mb_out, mb_err = run_git(["merge-base", "HEAD", "origin/main"], repo_root) + if rc == 0 and mb_out.strip(): + resolved_base_ref = mb_out.strip() + else: + resolve_error = ( + "`git merge-base HEAD origin/main` could not resolve a base ref" + + (f" ({mb_err.strip()})" if mb_err.strip() else "") + + " — there may be no origin/main remote, HEAD may be detached, or the clone may be shallow." + ) + elif not ref_exists(resolved_base_ref, repo_root): + resolve_error = f"--base-ref value '{resolved_base_ref}' does not resolve to a commit in this repository." + + if resolve_error: + emit_info( + "Check 9 skipped — no base ref could be resolved", + "references/sources.md", + resolve_error + " Check 9 did not run for any slug in this skill. " + "Pass --base-ref=, or set the VALIDATE_PROVENANCE_BASE_REF environment variable, " + "to compare against something other than origin/main." + ) + else: + sources_md_relpath = os.path.relpath(sources_md_path, repo_root) + rc, old_sources_content, show_err = run_git( + ["show", f"{resolved_base_ref}:{sources_md_relpath}"], repo_root + ) + if rc != 0: + # The base ref resolved fine, but references/sources.md did not + # exist there at all — the whole file is new. Every entry in it + # is therefore a creation, not a change: nothing to flag, and + # this is not a structural failure of the check, so no INFO + # either. Same reasoning applies per-slug below when the ref + # resolved but a given '## ' heading did not exist yet. + old_sources_content = None + + if old_sources_content is not None: + for slug in unique_slugs: + changed_fields = [] + for field_name in ("Description", "Contributing files"): + old_value = parse_field_raw(old_sources_content, slug, field_name) + new_value = parse_field_raw(sources_content, slug, field_name) + if old_value is None or new_value is None: + # No earlier claim to compare against — a brand-new + # entry, or a field that did not exist yet at the + # base ref. That is a creation, not a change, and is + # never flagged. + continue + if normalize_field_text(old_value) != normalize_field_text(new_value): + changed_fields.append(field_name) + if changed_fields: + field_list = " and ".join(changed_fields) + emit_info( + f"'{field_list}' changed for '{slug}' since {resolved_base_ref}", + f"references/sources.md (## {slug})", + f"The '## {slug}' entry's {field_list} text differs from the version at " + f"{resolved_base_ref}. This script can confirm the entry is internally " + f"consistent, but it cannot verify whether the claim itself is still true — a " + f"retrofit once turned an honest hedge into an unsupported confident claim and " + f"every structural check here passed it silently. Re-read the upstream research " + f"doc named in this entry's Research doc field and the Contributing files it " + f"lists, and confirm by hand that the wording still holds." + ) + print_findings() sys.exit(1 if has_fail else 0) PYTHON diff --git a/plugins/kyberforge/.apm/skills/skill-audit/tests/validate-provenance.bats b/plugins/kyberforge/.apm/skills/skill-audit/tests/validate-provenance.bats index c5f7d95..36dd144 100644 --- a/plugins/kyberforge/.apm/skills/skill-audit/tests/validate-provenance.bats +++ b/plugins/kyberforge/.apm/skills/skill-audit/tests/validate-provenance.bats @@ -67,17 +67,36 @@ EOF EOF } - # Helper: create a fake repo (a .git marker makes find_repo_root stop there) - # holding one skill whose single sources.md slug points at the given - # Research doc value. Checks 7 and 8 only run for a skill inside a checkout, - # so every upstream case needs this shape; the research doc itself is - # written per test into "$repo/docs/research/sources.md". + # Helper: turn dir into a real git repo with one commit of its current + # contents, and a refs/remotes/origin/main pointing at that same commit. + # Check 9 diffs the skill's references/sources.md against `git merge-base + # HEAD origin/main` by default; this makes that resolve to a commit whose + # sources.md is byte-identical to the working tree, so check 9 has + # nothing to report there — exactly what a real repo looks like the + # instant after a clean commit. Fixtures that go on to test something + # else entirely (checks 3, 4, 5, 7, 8...) call this once, at the point + # their skill's own sources.md is in its final state, so a completely + # clean run stays completely clean. + commit_as_base() { + local dir="$1" + git -C "$dir" init -q >/dev/null 2>&1 + git -C "$dir" -c user.email=test@example.com -c user.name=test add -A >/dev/null 2>&1 + git -C "$dir" -c user.email=test@example.com -c user.name=test commit -q -m base >/dev/null 2>&1 + git -C "$dir" update-ref refs/remotes/origin/main HEAD >/dev/null 2>&1 + } + + # Helper: create a fake repo (a real git repo, one commit, makes + # find_repo_root stop there) holding one skill whose single sources.md + # slug points at the given Research doc value. Checks 7 and 8 only run + # for a skill inside a checkout, so every upstream case needs this shape; + # the research doc itself is written per test into + # "$repo/docs/research/sources.md" — which check 9 does not examine, so + # a test overwriting it after this helper runs does not disturb check 9. make_upstream_skill() { local repo="$1" local research="${2:-docs/research/sources.md}" local skill="$repo/my-skill" mkdir -p "$skill/references" "$repo/docs/research" - touch "$repo/.git" cat > "$skill/SKILL.md" <> "$skill/references/sources.md" </dev/null 2>&1 + + run bash "$SCRIPT" "$skill" + assert_success + assert_output --partial "INFO" + assert_output --partial "Check 9 skipped — no base ref could be resolved" +} + +@test "check 9: --base-ref overrides the default origin/main resolution" { + local skill="$TMPDIR/my-skill" + make_skill_with_source_keys "$skill" + make_sources_md "$skill" + commit_as_base "$skill" + local base_sha + base_sha="$(git -C "$skill" rev-parse HEAD)" + git -C "$skill" update-ref -d refs/remotes/origin/main >/dev/null 2>&1 + + sed -i 's/^- \*\*Description:\*\* A test source\.$/- **Description:** A rewritten claim./' \ + "$skill/references/sources.md" + + run bash "$SCRIPT" "$skill" "--base-ref=$base_sha" + assert_success + assert_output --partial "'Description' changed for 'my-source'" +} + +@test "check 9: an invalid --base-ref value is reported as unresolvable, not a crash" { + local skill="$TMPDIR/my-skill" + make_skill_with_source_keys "$skill" + make_sources_md "$skill" + commit_as_base "$skill" + + run bash "$SCRIPT" "$skill" "--base-ref=not-a-real-ref" + assert_success + assert_output --partial "Check 9 skipped — no base ref could be resolved" + assert_output --partial "not-a-real-ref" +} diff --git a/plugins/kyberforge/.apm/skills/skill-author/references/retrofit.md b/plugins/kyberforge/.apm/skills/skill-author/references/retrofit.md index 37fa55d..337bb1d 100644 --- a/plugins/kyberforge/.apm/skills/skill-author/references/retrofit.md +++ b/plugins/kyberforge/.apm/skills/skill-author/references/retrofit.md @@ -105,6 +105,16 @@ them for you. After every retrofit that adds, removes or renames a file: zero. - [ ] Re-run `/skill-audit` and confirm its `### Provenance` dimension does not report the new file as missing `source_keys`. +- [ ] **Compression must not add authority the source text didn't have.** The bullet above is + about a `sources.md` entry going *stale* — Contributing files left uncited after content + moves. This is a distinct failure: a compression or rewrite pass that upgrades an honest + hedge in a Description into an unsupported confident claim, without the underlying source + having changed at all — "no forge-specific content drawn directly from it beyond that" + quietly becoming "Grounds Step 2's dispatch table." Nothing in `/skill-audit`'s structural + checks catches this; a bash script can verify an entry is internally consistent, never + whether the claim is *true*. If a retrofit strengthens or otherwise changes the wording of a + provenance claim, re-read the upstream research doc first and confirm the stronger wording + is actually still true before committing it. ## Worked example — a description retrofit -- 2.43.0 From af8b46cd57c69d653871453144df44b8a6d7ab5c Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:43:51 +0000 Subject: [PATCH 05/12] chore(plugins): sync generated content mirrors Regenerate plugins/*/skills/ from plugins/*/.apm/ after the previous four commits, via scripts/sync-plugin-content.sh --all. The mirror is generated output (ADR-0017) that check-plugin-content-sync's pre-push hook diffs against .apm/; nothing here is hand-edited. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- plugins/bin/skills/caveman/SKILL.md | 2 + plugins/bin/skills/diagnose/SKILL.md | 2 + plugins/bin/skills/grill-me/SKILL.md | 2 + plugins/bin/skills/grill-with-docs/SKILL.md | 2 + .../improve-codebase-architecture/SKILL.md | 2 + plugins/bin/skills/prototype/SKILL.md | 2 + plugins/bin/skills/research/SKILL.md | 1 + plugins/bin/skills/tdd/SKILL.md | 2 + plugins/bin/skills/triage/SKILL.md | 2 + plugins/bin/skills/write-docs/SKILL.md | 2 +- plugins/bin/skills/zoom-out/SKILL.md | 2 + plugins/git/skills/git-branches/SKILL.md | 5 +- .../references/branch-operations.md | 30 +-- .../references/comparing-branches.md | 10 +- .../skills/git-branches/references/merging.md | 22 +- plugins/git/skills/git-history/SKILL.md | 15 +- .../skills/git-history/references/bisect.md | 28 +-- .../git-history/references/git-log-format.md | 52 ++-- plugins/git/skills/git-remotes/SKILL.md | 3 +- .../skills/git-remotes/references/fetch.md | 18 +- .../git/skills/git-remotes/references/pull.md | 16 +- .../git/skills/git-remotes/references/push.md | 30 +-- .../git-remotes/references/remote-config.md | 28 +-- plugins/git/skills/git-submodules/SKILL.md | 1 + plugins/git/skills/git-workflow/SKILL.md | 1 + plugins/git/skills/git-worktrees/SKILL.md | 31 +-- .../git-worktrees/references/worktrees.md | 62 ++--- plugins/git/skills/pc-author/SKILL.md | 1 + .../pc-author/references/create-config.md | 2 +- .../pc-author/references/modify-config.md | 2 +- plugins/git/skills/pc-run/SKILL.md | 3 +- .../pc-run/references/failure-patterns.md | 4 +- plugins/gitea/skills/gitea-files/SKILL.md | 1 + .../kyberforge/skills/agent-audit/SKILL.md | 1 + .../references/description-quality.md | 22 +- .../kyberforge/skills/agent-author/SKILL.md | 1 + .../kyberforge/skills/apm-install/SKILL.md | 1 + .../kyberforge/skills/apm-workflow/SKILL.md | 1 + plugins/kyberforge/skills/forge/SKILL.md | 1 + .../kyberforge/skills/skill-audit/SKILL.md | 1 + .../references/validation-scripts.md | 13 + .../scripts/validate-provenance.sh | 222 +++++++++++++++++- .../kyberforge/skills/skill-author/SKILL.md | 3 +- .../skills/skill-author/references/create.md | 6 +- .../skill-author/references/retrofit.md | 10 + 45 files changed, 467 insertions(+), 201 deletions(-) diff --git a/plugins/bin/skills/caveman/SKILL.md b/plugins/bin/skills/caveman/SKILL.md index dea5b4a..542810f 100644 --- a/plugins/bin/skills/caveman/SKILL.md +++ b/plugins/bin/skills/caveman/SKILL.md @@ -4,6 +4,8 @@ disable-model-invocation: true description: > Ultra-compressed output mode that drops articles, filler and pleasantries while keeping technical substance exact, cutting token usage by roughly 75%. +metadata: + version: "1.0.0" --- Respond terse like smart caveman. All technical substance stay. Only fluff die. diff --git a/plugins/bin/skills/diagnose/SKILL.md b/plugins/bin/skills/diagnose/SKILL.md index 1e60479..ee85d02 100644 --- a/plugins/bin/skills/diagnose/SKILL.md +++ b/plugins/bin/skills/diagnose/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user says "diagnose this" or "debug this", reports something broken, throwing, or failing, or says something got slow. Not filing or triaging a reported bug -> `triage`. Not test-first feature work -> `tdd`. +metadata: + version: "1.0.0" --- # Diagnose diff --git a/plugins/bin/skills/grill-me/SKILL.md b/plugins/bin/skills/grill-me/SKILL.md index 1cc8ede..70bb682 100644 --- a/plugins/bin/skills/grill-me/SKILL.md +++ b/plugins/bin/skills/grill-me/SKILL.md @@ -5,6 +5,8 @@ description: > relentless interview — one question at a time, down each branch of the decision tree. Not a plan to challenge against `CONTEXT.md` and ADRs -> `grill-with-docs`. +metadata: + version: "1.0.0" --- Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. diff --git a/plugins/bin/skills/grill-with-docs/SKILL.md b/plugins/bin/skills/grill-with-docs/SKILL.md index 8610263..cc93aef 100644 --- a/plugins/bin/skills/grill-with-docs/SKILL.md +++ b/plugins/bin/skills/grill-with-docs/SKILL.md @@ -4,6 +4,8 @@ description: > Use when a plan should be stress-tested against the project's domain model — the interview challenges terms against `CONTEXT.md` and writes decisions into it and into ADRs as they land. Not a plain interview -> `grill-me`. +metadata: + version: "1.0.0" --- diff --git a/plugins/bin/skills/improve-codebase-architecture/SKILL.md b/plugins/bin/skills/improve-codebase-architecture/SKILL.md index 750876a..48803ca 100644 --- a/plugins/bin/skills/improve-codebase-architecture/SKILL.md +++ b/plugins/bin/skills/improve-codebase-architecture/SKILL.md @@ -6,6 +6,8 @@ description: > testable and AI-navigable — deepening opportunities that turn shallow modules into deep ones, informed by `CONTEXT.md` and `docs/adr/`. Not debugging a failure -> `diagnose`. +metadata: + version: "1.0.0" --- # Improve Codebase Architecture diff --git a/plugins/bin/skills/prototype/SKILL.md b/plugins/bin/skills/prototype/SKILL.md index 0c9d8e3..b544772 100644 --- a/plugins/bin/skills/prototype/SKILL.md +++ b/plugins/bin/skills/prototype/SKILL.md @@ -5,6 +5,8 @@ description: > a data model, state machine or business logic, or to mock up a UI in several variations. Not production code -> `tdd`. Not talking a design through -> `grill-me`. +metadata: + version: "1.0.0" --- # Prototype diff --git a/plugins/bin/skills/research/SKILL.md b/plugins/bin/skills/research/SKILL.md index 19fffee..1d114ab 100644 --- a/plugins/bin/skills/research/SKILL.md +++ b/plugins/bin/skills/research/SKILL.md @@ -6,6 +6,7 @@ description: >- documentation written from existing code or specs -> `write-docs`. Not a bug or incident -> `diagnose`. metadata: + version: "1.0.0" category: research allowed-tools: - Grep diff --git a/plugins/bin/skills/tdd/SKILL.md b/plugins/bin/skills/tdd/SKILL.md index ad3be57..736773a 100644 --- a/plugins/bin/skills/tdd/SKILL.md +++ b/plugins/bin/skills/tdd/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user wants a feature built or a bug fixed test-first, in a strict red-green-refactor loop, one behaviour at a time. Not diagnosing an existing bug -> `diagnose`. Not throwaway exploratory code -> `prototype`. +metadata: + version: "1.0.0" --- # Test-Driven Development diff --git a/plugins/bin/skills/triage/SKILL.md b/plugins/bin/skills/triage/SKILL.md index d83ab5e..548026e 100644 --- a/plugins/bin/skills/triage/SKILL.md +++ b/plugins/bin/skills/triage/SKILL.md @@ -4,6 +4,8 @@ description: > Use when the user wants an issue created, triaged, or moved through the tracker's triage states, or an issue prepared for an AFK agent. Not debugging the bug itself -> `diagnose`. Not fleshing out a design -> `grill-with-docs`. +metadata: + version: "1.0.0" --- # Triage diff --git a/plugins/bin/skills/write-docs/SKILL.md b/plugins/bin/skills/write-docs/SKILL.md index 30ea51d..06a9a54 100644 --- a/plugins/bin/skills/write-docs/SKILL.md +++ b/plugins/bin/skills/write-docs/SKILL.md @@ -6,10 +6,10 @@ description: > module", "create docs for this feature", "write a README for this". Not an ADR or other decision record -> `grill-with-docs`. Not an external tool researched from its docs -> `research`. -version: "1.0" updated: 2026-05-17 when: invoked by explicit trigger ("write docs for X", "document this module", "create docs for this feature") or implicit request to produce technical documentation from code or spec metadata: + version: "1.0" category: implement source: - repo: anthropics/skills diff --git a/plugins/bin/skills/zoom-out/SKILL.md b/plugins/bin/skills/zoom-out/SKILL.md index 1e7a5dc..4ba619a 100644 --- a/plugins/bin/skills/zoom-out/SKILL.md +++ b/plugins/bin/skills/zoom-out/SKILL.md @@ -2,6 +2,8 @@ name: zoom-out description: Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture. disable-model-invocation: true +metadata: + version: "1.0.0" --- I don't know this area of code well. Go up a layer of abstraction. Give me a map of all the relevant modules and callers, using the project's domain glossary vocabulary. diff --git a/plugins/git/skills/git-branches/SKILL.md b/plugins/git/skills/git-branches/SKILL.md index 44d79c9..2bb809a 100644 --- a/plugins/git/skills/git-branches/SKILL.md +++ b/plugins/git/skills/git-branches/SKILL.md @@ -9,6 +9,7 @@ description: > Not a Gitea remote's branches -> `gitea-branches`. metadata: + version: "1.0.0" category: git source_keys: - context7-git-htmldocs @@ -20,7 +21,7 @@ metadata: ## Gotchas - **Uncommitted changes abort a switch.** `git switch` refuses rather than clobbering conflicting local edits. Offer to stash and retry — forcing the checkout past it is how work disappears. -- **A branch and a tag can carry the same name.** Detect it before acting — `git branch --list ` and `git tag --list `; output from both means the name is ambiguous. Prefer `git switch` over `git checkout`, and where a command accepts either ref, disambiguate with `refs/heads/` or `refs/tags/`. +- **A branch and a tag can carry the same name.** Detect it before acting — `rtk git branch --list ` and `rtk git tag --list `; output from both means the name is ambiguous. Prefer `git switch` over `git checkout`, and where a command accepts either ref, disambiguate with `refs/heads/` or `refs/tags/`. - **`main` and `master` are a refusal, not a gate.** Force-pushing, force-deleting, or renaming them is rejected even when the caller passes `confirm: true` — no flag makes the remote's history recoverable. Offer a new branch instead. ## Step 1 — Determine the branching pattern @@ -51,7 +52,7 @@ These gates are passable. The `main`/`master` refusal in Gotchas is not. ## Step 4 — Set tracking -A new branch's first push must be `git push -u origin `. The push itself is `git-remotes`' — every remote-side gate lives there, which is why Step 2's remote-delete row hands off the same way — but the upstream requirement originates here, so carry it in the handoff. Without an upstream, later pushes and pulls either fail or silently target the wrong remote branch, and the caller has no way to tell which happened. +A new branch's first push must be `rtk git push -u origin `. The push itself is `git-remotes`' — every remote-side gate lives there, which is why Step 2's remote-delete row hands off the same way — but the upstream requirement originates here, so carry it in the handoff. Without an upstream, later pushes and pulls either fail or silently target the wrong remote branch, and the caller has no way to tell which happened. ## Step 5 — Return a structured result diff --git a/plugins/git/skills/git-branches/references/branch-operations.md b/plugins/git/skills/git-branches/references/branch-operations.md index b9e29f4..394dd7f 100644 --- a/plugins/git/skills/git-branches/references/branch-operations.md +++ b/plugins/git/skills/git-branches/references/branch-operations.md @@ -8,21 +8,21 @@ source_keys: One command per action. Where two forms exist, the first is the default and the second the escape hatch. -- **create** — `git switch -c `. Base comes from the config's `base_branch` +- **create** — `rtk git switch -c `. Base comes from the config's `base_branch` (`main` under GitHub Flow, usually `develop` under Gitflow). -- **switch** — `git switch ` moves to an existing local branch; it aborts rather than - clobbering conflicting local changes. `git switch -` returns to the previous branch. -- **delete (local)** — `git branch -d ` refuses when the branch holds unmerged commits, - which is why it is the default. `git branch -D ` forces the deletion and discards that +- **switch** — `rtk git switch ` moves to an existing local branch; it aborts rather than + clobbering conflicting local changes. `rtk git switch -` returns to the previous branch. +- **delete (local)** — `rtk git branch -d ` refuses when the branch holds unmerged commits, + which is why it is the default. `rtk git branch -D ` forces the deletion and discards that work — only after the destructive-operation gates pass and `confirm: true` is set. - **delete (remote)** — not this skill's. Deleting a remote branch is a push, and every remote-side gate lives in `git-remotes`; hand it there rather than running the push from here. Its `references/push.md` carries the command and the refspec form. -- **rename** — `git branch -m `. -- **list** — `git branch` (local), `-a` (local plus remote-tracking), `-r` (remote-tracking only), +- **rename** — `rtk git branch -m `. +- **list** — `rtk git branch` (local), `-a` (local plus remote-tracking), `-r` (remote-tracking only), `--merged` / `--no-merged` (filter by merge status into the current branch). -- **track** — `git branch --set-upstream-to=origin/` sets an upstream without pushing. - `git branch -vv` shows the tracking state of every local branch. +- **track** — `rtk git branch --set-upstream-to=origin/` sets an upstream without pushing. + `rtk git branch -vv` shows the tracking state of every local branch. ## get-intent @@ -40,17 +40,17 @@ intent is worse than one built on none. A switch aborts rather than clobbering conflicting local changes (see Gotchas). Stash is the way past it: it shelves the working tree and index so the branch pointer can move. -- **save** — `git stash push -m ""`. Add `-u` to include untracked files; verified on Git +- **save** — `rtk git stash push -m ""`. Add `-u` to include untracked files; verified on Git 2.39.5, a plain `push` leaves them in place, and a plain `push` with *only* untracked changes reports `No local changes to save` and stashes nothing. Bare `git stash` is `push` with no message. -- **restore** — `git stash pop` applies the newest entry and deletes it. `git stash apply stash@{n}` +- **restore** — `rtk git stash pop` applies the newest entry and deletes it. `rtk git stash apply stash@{n}` applies without deleting, for replaying one shelf onto more than one branch. -- **list** — `git stash list`; `git stash show -p stash@{n}` prints that entry's diff. -- **drop** — `git stash drop stash@{n}` deletes one entry. `git stash clear` deletes all of them +- **list** — `rtk git stash list`; `rtk git stash show -p stash@{n}` prints that entry's diff. +- **drop** — `rtk git stash drop stash@{n}` deletes one entry. `rtk git stash clear` deletes all of them and nothing recovers them — confirm before running it. -- **branch from a stash** — `git stash branch stash@{n}` creates a branch at the commit the +- **branch from a stash** — `rtk git stash branch stash@{n}` creates a branch at the commit the stash was taken from and pops it there. Use it when the stash no longer applies to the current tip. **A conflicting `pop` keeps the entry.** Verified on 2.39.5: it exits 1, writes conflict markers, prints "The stash entry is kept in case you need it again", and `git stash list` still shows it. -Resolve, `git add`, then `git stash drop` the entry by hand — otherwise it silently accumulates. +Resolve, `rtk git add`, then `rtk git stash drop` the entry by hand — otherwise it silently accumulates. diff --git a/plugins/git/skills/git-branches/references/comparing-branches.md b/plugins/git/skills/git-branches/references/comparing-branches.md index 24c3214..cb26f28 100644 --- a/plugins/git/skills/git-branches/references/comparing-branches.md +++ b/plugins/git/skills/git-branches/references/comparing-branches.md @@ -8,9 +8,9 @@ source_keys: The two-dot and three-dot forms mean different things and are easy to swap by accident — check the direction before reporting a result. -- `git log main..feature` — commits on `feature` that are not on `main`. -- `git log feature..main` — the reverse direction: commits on `main` not on `feature`. -- `git log --left-right main...feature` — both diverging sets at once (symmetric difference). -- `git diff main...feature` — the diff from the common ancestor to `feature`'s tip, which is what +- `rtk git log main..feature` — commits on `feature` that are not on `main`. +- `rtk git log feature..main` — the reverse direction: commits on `main` not on `feature`. +- `rtk git log --left-right main...feature` — both diverging sets at once (symmetric difference). +- `rtk git diff main...feature` — the diff from the common ancestor to `feature`'s tip, which is what a reviewer sees, rather than the diff between the two tips. -- `git merge-base main feature` — print the common ancestor commit. +- `rtk git merge-base main feature` — print the common ancestor commit. diff --git a/plugins/git/skills/git-branches/references/merging.md b/plugins/git/skills/git-branches/references/merging.md index 0302138..44ec0ac 100644 --- a/plugins/git/skills/git-branches/references/merging.md +++ b/plugins/git/skills/git-branches/references/merging.md @@ -9,22 +9,22 @@ source_keys: Scope is fast-forward and merge-commit mechanics plus conflict resolution. Rebase and cherry-pick belong to `git-commits`; revert to `git-history`. -- **Fast-forward** — `git merge ` advances the pointer with no merge commit when the +- **Fast-forward** — `rtk git merge ` advances the pointer with no merge commit when the target has not diverged. -- **True merge** — `git merge --no-ff ` forces a merge commit even when a fast-forward is +- **True merge** — `rtk git merge --no-ff ` forces a merge commit even when a fast-forward is possible. Gitflow requires it on every supporting-branch merge. -- **Squash merge** — `git merge --squash ` stages the combined diff without committing. - Follow it with a `git commit`. -- **Octopus merge** — `git merge branch-a branch-b branch-c` merges more than two branches at +- **Squash merge** — `rtk git merge --squash ` stages the combined diff without committing. + Follow it with a `rtk git commit`. +- **Octopus merge** — `rtk git merge branch-a branch-b branch-c` merges more than two branches at once, but fails outright on any conflict. Use sequential two-way merges when conflicts are likely. ## Conflict resolution -When Git cannot auto-merge it writes conflict markers and stops mid-merge. Run `git status` to -list the conflicted files, edit each to resolve its markers, then `git add ` and -`git merge --continue`. +When Git cannot auto-merge it writes conflict markers and stops mid-merge. Run `rtk git status` to +list the conflicted files, edit each to resolve its markers, then `rtk git add ` and +`rtk git merge --continue`. -- `git merge --abort` restores the pre-merge state. -- `git mergetool` opens the configured merge tool. -- `git diff --diff-filter=U` shows only the still-conflicted files. +- `rtk git merge --abort` restores the pre-merge state. +- `rtk git mergetool` opens the configured merge tool. +- `rtk git diff --diff-filter=U` shows only the still-conflicted files. diff --git a/plugins/git/skills/git-history/SKILL.md b/plugins/git/skills/git-history/SKILL.md index 6057bee..ae6cf27 100644 --- a/plugins/git/skills/git-history/SKILL.md +++ b/plugins/git/skills/git-history/SKILL.md @@ -8,6 +8,7 @@ description: > `git-commits`. Not a Gitea server's history -> `gitea-branches`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-bisect-docs @@ -34,13 +35,13 @@ allowed-tools: Bash ## Step 2 — Query the log -Default to `git log --oneline`, then narrow by whatever is known: +Default to `rtk git log --oneline`, then narrow by whatever is known: -- **Content**: `git log -S"string"`, or `-G"regex"` to match any diff line. `--pickaxe-regex` makes the `-S` argument a POSIX ERE; `--pickaxe-all` shows every file in a matching changeset. -- **A line or function**: `git log -L ,:` or `git log -L ::`. Confirm the range resolves before reporting on it — an off-by-one silently omits the target. -- **A file across renames**: `git log --follow -- `. Without `--follow` the history stops at the rename boundary. +- **Content**: `rtk git log -S"string"`, or `-G"regex"` to match any diff line. `--pickaxe-regex` makes the `-S` argument a POSIX ERE; `--pickaxe-all` shows every file in a matching changeset. +- **A line or function**: `rtk git log -L ,:` or `rtk git log -L ::`. Confirm the range resolves before reporting on it — an off-by-one silently omits the target. +- **A file across renames**: `rtk git log --follow -- `. Without `--follow` the history stops at the rename boundary. - **Mainline only**: `--first-parent` follows the integration branch and skips commits merged in from side branches. -- **Structured output**: `git log --format="%h | %s | %an (%ar)"`. +- **Structured output**: `rtk git log --format="%h | %s | %an (%ar)"`. If you need the placeholder catalogue, format presets, `--diff-filter` letters, full `-L` syntax, ancestry filters, pickaxe binary-file behaviour, or `git diff` output-control flags such as `--stat`, `--word-diff` and the whitespace options, read `references/git-log-format.md`. @@ -49,8 +50,8 @@ If you need the placeholder catalogue, format presets, `--diff-filter` letters, Offer the operation and its consequence; run it only once the user has chosen. - Backporting the commit to another branch is a cherry-pick, and cherry-pick is `git-commits`' — it owns the destination-branch check, the `rtk git` wrapper and the `--abort` path. Hand it the SHA; do not run `git cherry-pick` from here. -- `git revert ` adds a new commit undoing it — for un-applying merged work without rewriting history. -- `git blame ` attributes each line to the commit that last touched it, when the question is which commit introduced one specific line. +- `rtk git revert ` adds a new commit undoing it — for un-applying merged work without rewriting history. +- `rtk git blame ` attributes each line to the commit that last touched it, when the question is which commit introduced one specific line. For diff output control on the located commit, read `references/git-log-format.md`. diff --git a/plugins/git/skills/git-history/references/bisect.md b/plugins/git/skills/git-history/references/bisect.md index 2fd7026..bfca3e6 100644 --- a/plugins/git/skills/git-history/references/bisect.md +++ b/plugins/git/skills/git-history/references/bisect.md @@ -12,43 +12,43 @@ or line range to search the log for. Binary search reduces the trials from O(N) ## Manual flow ```bash -git bisect start -git bisect bad [HEAD] # mark current (or specified) as broken -git bisect good # mark known-good baseline +rtk git bisect start +rtk git bisect bad [HEAD] # mark current (or specified) as broken +rtk git bisect good # mark known-good baseline # Git checks out the midpoint; test it -git bisect good # test passes -git bisect bad # test fails +rtk git bisect good # test passes +rtk git bisect bad # test fails # Repeat until git reports "X is the first bad commit" -git bisect reset # return to the original HEAD +rtk git bisect reset # return to the original HEAD ``` ## Automated -With a test command available, use `git bisect run `. Git reads the exit code: `0` good, +With a test command available, use `rtk git bisect run `. Git reads the exit code: `0` good, `1`–`124` bad, `125` skip (build broken), `126`–`127` POSIX shell errors, treated as bad, and `128` or above aborts the session outright rather than marking the commit bad. ## Untestable commits -`git bisect skip` excludes a commit that cannot be built or tested without deciding good or bad +`rtk git bisect skip` excludes a commit that cannot be built or tested without deciding good or bad for it. When the first bad commit is adjacent to a skipped range, bisect reports that it cannot pinpoint the culprit and lists the candidates — that is the precise answer the skip range allows, not a failure. ## Undoing a wrong good/bad call -`git bisect log` prints the session's decision history. Save it, edit out the mistaken entry, and +`rtk git bisect log` prints the session's decision history. Save it, edit out the mistaken entry, and resume from the corrected log rather than restarting the search: ```bash -git bisect log > bisect.log +rtk git bisect log > bisect.log # edit bisect.log, removing the wrong decision -git bisect reset && git bisect replay bisect.log +rtk git bisect reset && rtk git bisect replay bisect.log ``` ## Narrowing and speeding up -- `git bisect start HEAD v1.2 -- src/` restricts bisection to a path, cutting the trial count. +- `rtk git bisect start HEAD v1.2 -- src/` restricts bisection to a path, cutting the trial count. - `--no-checkout` updates the `BISECT_HEAD` ref instead of checking out a working tree — useful for tests that do not need one, and automatic in bare repos. - `--first-parent` follows only first parents at merges, finding the integration commit that @@ -56,12 +56,12 @@ git bisect reset && git bisect replay bisect.log ## Inspecting the remaining candidates -`git bisect visualize` (alias `view`) opens the suspects in gitk, falling back to `git log` when +`rtk git bisect visualize` (alias `view`) opens the suspects in gitk, falling back to `git log` when no graphical display is detected. Add `--stat` or `-p` for a diffstat or full patches. ## Hunting a non-bug property change -`git bisect start --term-new --term-old ` searches for any property change — a +`rtk git bisect start --term-new --term-old ` searches for any property change — a performance regression, say — instead of a bug. Use the custom terms in place of `good` and `bad` for the rest of the session. diff --git a/plugins/git/skills/git-history/references/git-log-format.md b/plugins/git/skills/git-history/references/git-log-format.md index 821bfdd..0b511f3 100644 --- a/plugins/git/skills/git-history/references/git-log-format.md +++ b/plugins/git/skills/git-history/references/git-log-format.md @@ -116,15 +116,15 @@ source_keys: **`-S`** — finds commits where the **count** of `` changed (i.e. the string was added or removed net). Does not match commits where the string merely appears in a diff hunk without a count change. ```bash -git log -S"my_function" -git log -S"my_function" --pickaxe-regex # treat as POSIX ERE -git log -S"my_function" --pickaxe-all # show all files in matching changesets +rtk git log -S"my_function" +rtk git log -S"my_function" --pickaxe-regex # treat as POSIX ERE +rtk git log -S"my_function" --pickaxe-all # show all files in matching changesets ``` **`-G`** — finds commits where any added or removed **line** in the patch matches ``. Broader than `-S`: matches whenever the pattern appears in diff text regardless of count. ```bash -git log -G"frotz\(nitfol" +rtk git log -G"frotz\(nitfol" ``` **Critical distinction:** given a diff that removes one occurrence of `foo` and adds one occurrence of `foo` (net change = 0): @@ -151,8 +151,8 @@ Selects commits (in `git log`) or files (in `git diff`) by change type: Lowercase letters **exclude** that type: ```bash -git log --diff-filter=ad # exclude added and deleted files -git log --diff-filter=M # only show commits with modified files +rtk git log --diff-filter=ad # exclude added and deleted files +rtk git log --diff-filter=M # only show commits with modified files ``` `C` and `R` only appear when copy/rename detection is enabled (`-C`, `-M` flags or `diff.renames` config). @@ -162,10 +162,10 @@ git log --diff-filter=M # only show commits with modified files Traces the evolution of a specific range of lines or a named function through commits. Implies `--patch`. ```bash -git log -L 10,20:file.txt -git log -L /start_pattern/,/end_pattern/:file.txt -git log -L :myfunction:src/app.c -git log -L /init/,+15:config.py # 15 lines after first match of /init/ +rtk git log -L 10,20:file.txt +rtk git log -L /start_pattern/,/end_pattern/:file.txt +rtk git log -L :myfunction:src/app.c +rtk git log -L /init/,+15:config.py # 15 lines after first match of /init/ ``` Range formats: @@ -182,12 +182,12 @@ Limitations: incompatible with `--raw`, `--numstat`, `--shortstat`, `--name-only ## Graph and Ancestry Filters ```bash -git log --first-parent # at merges, follow only first parent (mainline evolution) -git log --merges # only merge commits (≥2 parents); equivalent to --min-parents=2 -git log --no-merges # only non-merge commits; equivalent to --max-parents=1 -git log --ancestry-path D..M # only commits actually on the path from D to M -git log --min-parents= # include only commits with ≥ n parents -git log --max-parents= # include only commits with ≤ n parents +rtk git log --first-parent # at merges, follow only first parent (mainline evolution) +rtk git log --merges # only merge commits (≥2 parents); equivalent to --min-parents=2 +rtk git log --no-merges # only non-merge commits; equivalent to --max-parents=1 +rtk git log --ancestry-path D..M # only commits actually on the path from D to M +rtk git log --min-parents= # include only commits with ≥ n parents +rtk git log --max-parents= # include only commits with ≤ n parents ``` `--ancestry-path` is significant: without it, `D..M` includes all commits reachable from M but not D — including side branches that merged into the path. With it, only commits directly between D and M are shown. @@ -197,17 +197,17 @@ git log --max-parents= # include only commits with ≤ n parents ### --stat ```bash -git diff --stat # diffstat: file names + ± bar -git diff --stat=,, -git diff --compact-summary # alongside --stat: shows new/gone, +x/-x (executable), +l (symlink) -git diff --numstat # machine-readable: \t\t; - for binary +rtk git diff --stat # diffstat: file names + ± bar +rtk git diff --stat=,, +rtk git diff --compact-summary # alongside --stat: shows new/gone, +x/-x (executable), +l (symlink) +rtk git diff --numstat # machine-readable: \t\t; - for binary ``` ### --name-only / --name-status ```bash -git diff --name-only # only filenames, one per line -git diff --name-status # status letter + filename per line +rtk git diff --name-only # only filenames, one per line +rtk git diff --name-status # status letter + filename per line ``` `--name-status` uses the same status letters as `--diff-filter`. @@ -215,10 +215,10 @@ git diff --name-status # status letter + filename per line ### --word-diff ```bash -git diff --word-diff # inline word-level diff with [-removed-] {+added+} markers -git diff --word-diff=color # color only, no markers -git diff --word-diff=porcelain # machine-readable: +/- prefixed lines, ~ for newlines -git diff --word-diff-regex= # define what counts as a "word" +rtk git diff --word-diff # inline word-level diff with [-removed-] {+added+} markers +rtk git diff --word-diff=color # color only, no markers +rtk git diff --word-diff=porcelain # machine-readable: +/- prefixed lines, ~ for newlines +rtk git diff --word-diff-regex= # define what counts as a "word" ``` ### Whitespace Flags diff --git a/plugins/git/skills/git-remotes/SKILL.md b/plugins/git/skills/git-remotes/SKILL.md index 5f457c1..f88024d 100644 --- a/plugins/git/skills/git-remotes/SKILL.md +++ b/plugins/git/skills/git-remotes/SKILL.md @@ -10,6 +10,7 @@ description: > Not submodule pointers -> `git-submodules`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-remote-docs @@ -27,7 +28,7 @@ metadata: ## Step 1 — Clear the force-push gate -`main` and `master` are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, `git push --force` and `-f` run only after the caller passes `confirm: true` for that specific push — for a human caller, prompt instead of failing. +`main` and `master` are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, `rtk git push --force` and `-f` run only after the caller passes `confirm: true` for that specific push — for a human caller, prompt instead of failing. ## Step 2 — Dispatch diff --git a/plugins/git/skills/git-remotes/references/fetch.md b/plugins/git/skills/git-remotes/references/fetch.md index 0826b17..8198b71 100644 --- a/plugins/git/skills/git-remotes/references/fetch.md +++ b/plugins/git/skills/git-remotes/references/fetch.md @@ -11,19 +11,19 @@ Fetch **with no refspec** updates remote-tracking branches (`refs/remotes/ That safety comes from the default refspec, not from `fetch` itself. Give it an explicit one and it writes to local branches: verified on Git 2.39.5, `git fetch origin main:probe` fast-forwarded the local `probe` branch, and a `+` prefix force-updates the destination, discarding whatever commits it held. Treat any `fetch` carrying a `:` refspec as a branch update, not a read. -- **One remote**: `git fetch ` — all branches -- **One branch**: `git fetch ` — the result lands in `FETCH_HEAD`, not a tracking ref -- **All remotes**: `git fetch --all` -- **Prune properly**: `git fetch --all --prune --prune-tags` cleans stale branches *and* tags -- **Auto-prune**: `git config --global fetch.prune true` (or `remote..prune` to scope it to one remote), and `fetch.pruneTags true` for tags +- **One remote**: `rtk git fetch ` — all branches +- **One branch**: `rtk git fetch ` — the result lands in `FETCH_HEAD`, not a tracking ref +- **All remotes**: `rtk git fetch --all` +- **Prune properly**: `rtk git fetch --all --prune --prune-tags` cleans stale branches *and* tags +- **Auto-prune**: `rtk git config --global fetch.prune true` (or `remote..prune` to scope it to one remote), and `fetch.pruneTags true` for tags ## Shallow and partial fetch ```bash -git fetch --depth= # deepen history, or create a shallow clone -git fetch --unshallow # convert a shallow clone to full history -git fetch --update-shallow # allow the fetch to update the shallow boundary -git fetch --refmap='' # fetch without updating any tracking ref (FETCH_HEAD only) +rtk git fetch --depth= # deepen history, or create a shallow clone +rtk git fetch --unshallow # convert a shallow clone to full history +rtk git fetch --update-shallow # allow the fetch to update the shallow boundary +rtk git fetch --refmap='' # fetch without updating any tracking ref (FETCH_HEAD only) ``` ## Default fetch refspec diff --git a/plugins/git/skills/git-remotes/references/pull.md b/plugins/git/skills/git-remotes/references/pull.md index b769742..dcf72fc 100644 --- a/plugins/git/skills/git-remotes/references/pull.md +++ b/plugins/git/skills/git-remotes/references/pull.md @@ -9,11 +9,11 @@ source_keys: Default strategy: `--ff-only`. It fails on divergence, which forces a conscious choice instead of an accidental merge commit. -- **Fast-forward only**: `git pull --ff-only` — the recommended default -- **Rebase**: `git pull --rebase` replays your commits on top for linear history, but rewrites SHAs. Verify nothing being replayed has been pushed: rebasing published commits breaks everyone downstream. -- **Merge**: `git pull --no-rebase` — three-way merge commit, preserves original commits, non-linear -- **Rebase preserving merges**: `git pull --rebase=merges` keeps intentional local merge commits during the replay -- **Stage without committing**: `git pull --squash` collapses incoming commits into staged changes; you write the message +- **Fast-forward only**: `rtk git pull --ff-only` — the recommended default +- **Rebase**: `rtk git pull --rebase` replays your commits on top for linear history, but rewrites SHAs. Verify nothing being replayed has been pushed: rebasing published commits breaks everyone downstream. +- **Merge**: `rtk git pull --no-rebase` — three-way merge commit, preserves original commits, non-linear +- **Rebase preserving merges**: `rtk git pull --rebase=merges` keeps intentional local merge commits during the replay +- **Stage without committing**: `rtk git pull --squash` collapses incoming commits into staged changes; you write the message - **Merge strategy**: Git 2.34+ defaults to `ort` (`recursive` is now an alias for it). Strategy options such as `-X ours`, `-X theirs`, `-X ignore-space-change` pass through unchanged. - **Submodules**: `--recurse-submodules` only fetches submodules already checked out. Newly added ones are not initialized — use the `git-submodules` skill for those. @@ -37,7 +37,7 @@ Highest wins: 4. `branch.autoSetupRebase` (set automatically when the tracking branch was created) ```bash -git config pull.ff only # deterministic default across Git versions -git config --global pull.rebase true -git config branch.develop.rebase false # develop always merges, regardless of the global default +rtk git config pull.ff only # deterministic default across Git versions +rtk git config --global pull.rebase true +rtk git config branch.develop.rebase false # develop always merges, regardless of the global default ``` diff --git a/plugins/git/skills/git-remotes/references/push.md b/plugins/git/skills/git-remotes/references/push.md index dd032fb..fecc521 100644 --- a/plugins/git/skills/git-remotes/references/push.md +++ b/plugins/git/skills/git-remotes/references/push.md @@ -9,14 +9,14 @@ source_keys: Default: safe push to the same-named branch on the remote. -- **Force-push**: never bare `--force`. Use `git push --force-with-lease --force-if-includes `, after the SKILL.md Step 1 gate. -- **Basic**: `git push ` -- **Set upstream**: `git push -u ` — push and configure tracking -- **Multi-remote**: push sequentially (`git push origin develop`, `git push staging develop`), or add a second push URL with `git remote set-url --add ` to reach both in one command -- **Delete a remote branch**: `git push --delete ` — clearer than the `:` form -- **Bulk**: `git push --all` (all local branches), `git push --tags` (all tags), `git push origin ` (one tag) -- **Delete remote branches with no local counterpart**: `git push --prune origin 'refs/heads/*:refs/heads/*'` -- **Force only part of a multi-ref push**: prefix the one refspec that needs it with `+` — `git push origin +release develop` forces `release` while safe-pushing `develop`. A `+` prefix is a force-push and passes the SKILL.md Step 1 gate like any other. +- **Force-push**: never bare `--force`. Use `rtk git push --force-with-lease --force-if-includes `, after the SKILL.md Step 1 gate. +- **Basic**: `rtk git push ` +- **Set upstream**: `rtk git push -u ` — push and configure tracking +- **Multi-remote**: push sequentially (`rtk git push origin develop`, `rtk git push staging develop`), or add a second push URL with `rtk git remote set-url --add ` to reach both in one command +- **Delete a remote branch**: `rtk git push --delete ` — clearer than the `:` form +- **Bulk**: `rtk git push --all` (all local branches), `rtk git push --tags` (all tags), `rtk git push origin ` (one tag) +- **Delete remote branches with no local counterpart**: `rtk git push --prune origin 'refs/heads/*:refs/heads/*'` +- **Force only part of a multi-ref push**: prefix the one refspec that needs it with `+` — `rtk git push origin +release develop` forces `release` while safe-pushing `develop`. A `+` prefix is a force-push and passes the SKILL.md Step 1 gate like any other. ## Refspec syntax — `[+][:]` @@ -48,19 +48,19 @@ Two mitigations: # Option 1 — dedicated push-only remote: background tools fetch `origin`, you push # through a separate remote that nothing else touches, so its tracking ref can't be # poisoned by an unrelated fetch. -git remote add origin-push $(git config remote.origin.url) -git push --force-with-lease origin-push +rtk git remote add origin-push $(rtk git config remote.origin.url) +rtk git push --force-with-lease origin-push # Option 2 — explicit SHA via a local tag, unaffected by tracking-branch state -git fetch -git tag base master -git rebase -i master -git push --force-with-lease=master:base master:master +rtk git fetch +rtk git tag base master +rtk git rebase -i master +rtk git push --force-with-lease=master:base master:master ``` `--force-if-includes` adds a second check on top of bare `--force-with-lease`: it verifies the remote-tracking tip actually appears in your local branch's reflog, i.e. you genuinely integrated it before rewriting. It is a no-op without `--force-with-lease`, and has no effect with the `--force-with-lease=:` form, which already pins an exact SHA. -Safest combination: `git push --force-with-lease --force-if-includes origin`. +Safest combination: `rtk git push --force-with-lease --force-if-includes origin`. ## Server-side policy diff --git a/plugins/git/skills/git-remotes/references/remote-config.md b/plugins/git/skills/git-remotes/references/remote-config.md index 5d44eef..3470543 100644 --- a/plugins/git/skills/git-remotes/references/remote-config.md +++ b/plugins/git/skills/git-remotes/references/remote-config.md @@ -9,31 +9,31 @@ source_keys: Which remotes exist, where they point, and what they track. -`git remote show ` needs network access — use `-n` for cached data offline, or `git remote -v`, which lists URLs without querying. +`rtk git remote show ` needs network access — use `-n` for cached data offline, or `rtk git remote -v`, which lists URLs without querying. ## Add, remove, rename, inspect -- **Add**: `git remote add `, or `-f` to fetch immediately -- **Remove**: `git remote remove ` — deletes the remote, all its tracking refs, and its config -- **Rename**: `git remote rename ` -- **Inspect**: `git remote -v` (URLs, offline) or `git remote show ` (live tracking status) -- **Effective URLs**: `git remote get-url ` shows the URL after `insteadOf` rewrites; `git remote get-url --push --all ` lists every push URL +- **Add**: `rtk git remote add `, or `-f` to fetch immediately +- **Remove**: `rtk git remote remove ` — deletes the remote, all its tracking refs, and its config +- **Rename**: `rtk git remote rename ` +- **Inspect**: `rtk git remote -v` (URLs, offline) or `rtk git remote show ` (live tracking status) +- **Effective URLs**: `rtk git remote get-url ` shows the URL after `insteadOf` rewrites; `rtk git remote get-url --push --all ` lists every push URL ## Tracking, mirroring, housekeeping -- **Track one branch**: `git remote add -t ` (repeatable); `--no-tags` suppresses tag import entirely +- **Track one branch**: `rtk git remote add -t ` (repeatable); `--no-tags` suppresses tag import entirely - **Mirror**: `--mirror=fetch` mirrors all refs locally (bare repos only); `--mirror=push` makes every push behave like `--mirror` -- **Prune stale tracking refs without fetching**: `git remote prune `, with `--dry-run` to preview -- **Default branch pointer**: `git remote set-head -a` (auto-detect, needs a prior fetch), `... ` (explicit), `... -d` (delete `refs/remotes//HEAD`) +- **Prune stale tracking refs without fetching**: `rtk git remote prune `, with `--dry-run` to preview +- **Default branch pointer**: `rtk git remote set-head -a` (auto-detect, needs a prior fetch), `... ` (explicit), `... -d` (delete `refs/remotes//HEAD`) ## `set-url` — full form ```bash -git remote set-url # replace the first fetch URL -git remote set-url # replace only the URL matching regex -git remote set-url --push # change push URL only (must point at same repo) -git remote set-url --add # add an extra push URL (push to multiple remotes) -git remote set-url --delete # remove URLs matching regex +rtk git remote set-url # replace the first fetch URL +rtk git remote set-url # replace only the URL matching regex +rtk git remote set-url --push # change push URL only (must point at same repo) +rtk git remote set-url --add # add an extra push URL (push to multiple remotes) +rtk git remote set-url --delete # remove URLs matching regex ``` `--push` changes only where pushes go — fetch and push URLs must still reference the same repository. For genuine fetch-from-A / push-to-B workflows, use two separate named remotes instead; `--push` cannot do this. diff --git a/plugins/git/skills/git-submodules/SKILL.md b/plugins/git/skills/git-submodules/SKILL.md index 55d65f2..f3969f7 100644 --- a/plugins/git/skills/git-submodules/SKILL.md +++ b/plugins/git/skills/git-submodules/SKILL.md @@ -9,6 +9,7 @@ description: > Not the superproject's own remotes -> `git-remotes`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-submodule-docs diff --git a/plugins/git/skills/git-workflow/SKILL.md b/plugins/git/skills/git-workflow/SKILL.md index 8f2f871..557f81f 100644 --- a/plugins/git/skills/git-workflow/SKILL.md +++ b/plugins/git/skills/git-workflow/SKILL.md @@ -8,6 +8,7 @@ description: > agent caller -> `git-orchestrate`. Not Gitea -> `gitea-workflow`. metadata: + version: "1.0.0" category: git source_keys: - nvie-gitflow-post diff --git a/plugins/git/skills/git-worktrees/SKILL.md b/plugins/git/skills/git-worktrees/SKILL.md index 15a89fc..0e6c9c7 100644 --- a/plugins/git/skills/git-worktrees/SKILL.md +++ b/plugins/git/skills/git-worktrees/SKILL.md @@ -8,6 +8,7 @@ description: > Not interactive multi-step git guidance -> `git-workflow`. metadata: + version: "1.0.0" category: git source_keys: - git-scm-worktree-docs @@ -16,7 +17,7 @@ metadata: ## Gotchas - **A branch can be checked out in only one worktree at a time.** `git worktree add` on an already-checked-out branch fails; `--force` is the only override, so use it only deliberately. -- **Never `rm -rf` a worktree directory.** That strands metadata in `$GIT_DIR/worktrees/`. Use `git worktree remove`, or `git worktree prune` afterwards. +- **Never `rm -rf` a worktree directory.** That strands metadata in `$GIT_DIR/worktrees/`. Use `rtk git worktree remove`, or `rtk git worktree prune` afterwards. - **Submodules break worktree support.** A worktree containing submodules cannot be moved at all, and needs `--force` to remove. - **`extensions.worktreeConfig = true` is a one-way door.** Without it, `git config --worktree` errors; with it, that flag writes to the worktree's own `config.worktree` file, and `core.bare`/`core.worktree` are forced there too. It also breaks older Git. Leave it off unless per-worktree config is needed. @@ -24,19 +25,19 @@ metadata: | Operation | Run | |---|---| -| Create on a branch that already exists locally | `git worktree add ` | -| Create on a new branch | `git worktree add -b ` | -| Create on the branch named after the path basename | `git worktree add ` — checks that branch out if it exists, else creates it from HEAD | -| Create and reset an existing branch to HEAD — discards its commits | `git worktree add -B ` | -| Create a local branch tracking a remote one | `git worktree add --track -b /` — always correct. `git worktree add ` expands to exactly this, but **only** under the conditions in `references/worktrees.md` | -| Throwaway experiment, no branch | `git worktree add -d ` — detached HEAD | +| Create on a branch that already exists locally | `rtk git worktree add ` | +| Create on a new branch | `rtk git worktree add -b ` | +| Create on the branch named after the path basename | `rtk git worktree add ` — checks that branch out if it exists, else creates it from HEAD | +| Create and reset an existing branch to HEAD — discards its commits | `rtk git worktree add -B ` | +| Create a local branch tracking a remote one | `rtk git worktree add --track -b /` — always correct. `git worktree add ` expands to exactly this, but **only** under the conditions in `references/worktrees.md` | +| Throwaway experiment, no branch | `rtk git worktree add -d ` — detached HEAD | | **Never** `git worktree add /` | That ref resolves, so the shortcut never fires and you get **a detached HEAD, no branch, no upstream**. Commits there go unreachable once HEAD moves, and `git push` needs an explicit refspec. Use the tracking row above | -| List | `git worktree list -v`, or `--porcelain -z` to parse | -| Lock or unlock | `git worktree lock [--reason ] ` / `git worktree unlock ` | -| Move | `git worktree move ` | -| Remove | `git worktree remove ` | -| Prune stale metadata | `git worktree prune --dry-run`, then without the flag | -| Repair after a manual move | `git worktree repair` — in the main worktree if *it* moved, or inside a linked worktree that moved. `git worktree repair ...` — from any worktree, naming each moved linked worktree's new path | +| List | `rtk git worktree list -v`, or `--porcelain -z` to parse | +| Lock or unlock | `rtk git worktree lock [--reason ] ` / `rtk git worktree unlock ` | +| Move | `rtk git worktree move ` | +| Remove | `rtk git worktree remove ` | +| Prune stale metadata | `rtk git worktree prune --dry-run`, then without the flag | +| Repair after a manual move | `rtk git worktree repair` — in the main worktree if *it* moved, or inside a linked worktree that moved. `rtk git worktree repair ...` — from any worktree, naming each moved linked worktree's new path | If the operation needs anything the table does not carry — the full `add` flag table, orphan branches, sparse-checkout, locking for removable media, remote @@ -48,7 +49,7 @@ Gates: - **`move`, `remove` — the main worktree cannot be moved or removed.** Only linked worktrees, the ones `git worktree add` created, are candidates. - **`add`, `move`, `remove` — escalate force flags one step at a time.** `-f` overrides a safeguard such as an unclean tree; `move` and `remove` need `-ff` on top of that when the worktree is locked. Confirm with the user before either — both discard state. -- **`add` — lock at creation, not after.** `git worktree add --lock` is atomic, where add-then-`lock` leaves a window in which the worktree is unprotected. +- **`add` — lock at creation, not after.** `rtk git worktree add --lock` is atomic, where add-then-`lock` leaves a window in which the worktree is unprotected. ## Step 2 — Report @@ -61,6 +62,6 @@ worktrees: lock_reason: ``` -Derive those fields from `git worktree list --porcelain -z`. For a single +Derive those fields from `rtk git worktree list --porcelain -z`. For a single operation, report its outcome instead — `created: true`, `moved: true`, `removed: true`. diff --git a/plugins/git/skills/git-worktrees/references/worktrees.md b/plugins/git/skills/git-worktrees/references/worktrees.md index c4d9b22..5894bd7 100644 --- a/plugins/git/skills/git-worktrees/references/worktrees.md +++ b/plugins/git/skills/git-worktrees/references/worktrees.md @@ -23,17 +23,17 @@ that are usable. ## `add` forms ```bash -git worktree add # exists locally: check it out — non-destructive -git worktree add -b # create a new branch; fails if it exists -git worktree add # branch named after $(basename ): checked out +rtk git worktree add # exists locally: check it out — non-destructive +rtk git worktree add -b # create a new branch; fails if it exists +rtk git worktree add # branch named after $(basename ): checked out # if it exists, else created from HEAD -git worktree add -B # create the branch, or reset an existing one to HEAD, +rtk git worktree add -B # create the branch, or reset an existing one to HEAD, # discarding the commits it carried -git worktree add --track -b / +rtk git worktree add --track -b / # new local branch tracking the remote — always works -git worktree add # absent locally and in exactly one remote: +rtk git worktree add # absent locally and in exactly one remote: # Git expands this to the --track -b form above -git worktree add -d # detached HEAD, no branch +rtk git worktree add -d # detached HEAD, no branch ``` The same `git worktree add ` spelling appears twice above and does two @@ -65,19 +65,19 @@ Using `-` as `` is shorthand for `@{-1}` (the branch checked out bef ## New unborn branch ```bash -git worktree add --orphan -b +rtk git worktree add --orphan -b ``` Creates an empty branch with no commits. **`--orphan` needs Git 2.42 or later** — it was added upstream in 2.42, and on 2.39.5 this fails with `error: unknown option 'orphan'` and exit 129. -Check `git --version` before reaching for it. +Check `rtk git --version` before reaching for it. Fallback on older Git, verified on 2.39.5 — detach first, then orphan the linked worktree in place, which leaves the main worktree on its own branch throughout: ```bash -git worktree add -d # linked worktree, detached HEAD +rtk git worktree add -d # linked worktree, detached HEAD cd -git switch --orphan # unborn branch: empty index, empty working tree +rtk git switch --orphan # unborn branch: empty index, empty working tree ``` `git worktree list` then shows the new worktree at `0000000 []` until its first commit. @@ -88,25 +88,25 @@ the disruption worktrees exist to avoid. Suppress the initial checkout to configure sparse-checkout first: ```bash -git worktree add --no-checkout ../sparse main +rtk git worktree add --no-checkout ../sparse main cd ../sparse -git sparse-checkout init --cone -git sparse-checkout set src/ -git checkout main +rtk git sparse-checkout init --cone +rtk git sparse-checkout set src/ +rtk git checkout main ``` ## Worktree on removable media ```bash -git worktree add --lock --reason "external SSD" -git worktree unlock # when reconnected +rtk git worktree add --lock --reason "external SSD" +rtk git worktree unlock # when reconnected ``` ## Remote-branch disambiguation ```bash -git worktree add --track -b / # explicit: no guessing at all -git worktree add # shortcut: needs one clear remote +rtk git worktree add --track -b / # explicit: no guessing at all +rtk git worktree add # shortcut: needs one clear remote ``` **The bare-name shortcut needs exactly one remote.** It fires only when `` is not found locally, none of `-b`/`-B`/`--detach` were given, and a tracking branch of that name exists in @@ -122,10 +122,10 @@ exactly one remote has it, and marks that branch as upstream. Its default comes ## Repair after a manual move ```bash -git worktree repair # the MAIN worktree moved: run it there to reconnect every linked +rtk git worktree repair # the MAIN worktree moved: run it there to reconnect every linked # worktree back to the main worktree -git worktree repair # a LINKED worktree moved: run it inside that recently-moved worktree -git worktree repair ... # reconnect a specific linked worktree — runnable from any worktree, +rtk git worktree repair # a LINKED worktree moved: run it inside that recently-moved worktree +rtk git worktree repair ... # reconnect a specific linked worktree — runnable from any worktree, # naming each moved tree's new path ``` @@ -133,10 +133,10 @@ Which form applies depends on what moved: | What moved | Remedy | |---|---| -| The main worktree (or bare repo) | `git worktree repair` in the main worktree | -| One linked worktree | `git worktree repair` inside that worktree | -| Several linked worktrees | `git worktree repair ...` from any worktree, listing each new path | -| Both main and linked worktrees | `git worktree repair ...` in the main worktree, naming each linked worktree's new path — this restores the connections in both directions | +| The main worktree (or bare repo) | `rtk git worktree repair` in the main worktree | +| One linked worktree | `rtk git worktree repair` inside that worktree | +| Several linked worktrees | `rtk git worktree repair ...` from any worktree, listing each new path | +| Both main and linked worktrees | `rtk git worktree repair ...` in the main worktree, naming each linked worktree's new path — this restores the connections in both directions | Only the no-argument form is tied to the current directory. The `...` form is not — it reestablishes the connection to every path you name, run from any worktree. @@ -157,20 +157,20 @@ reestablishes the connection to every path you name, run from any worktree. untouched throughout: ```bash -git worktree add -b emergency-fix ../temp main +rtk git worktree add -b emergency-fix ../temp main cd ../temp # fix, then commit -git commit -a -m "fix: critical production bug" +rtk git commit -a -m "fix: critical production bug" cd - -git worktree remove ../temp +rtk git worktree remove ../temp ``` **Review a PR branch alongside your own work** — both branches stay checked out, so there is no context switch: ```bash -git worktree add ../review-pr-123 origin/feature-xyz # detached HEAD — read-only review -git worktree add --track -b feature-xyz ../review-pr-123 origin/feature-xyz # if you will commit +rtk git worktree add ../review-pr-123 origin/feature-xyz # detached HEAD — read-only review +rtk git worktree add --track -b feature-xyz ../review-pr-123 origin/feature-xyz # if you will commit # open ../review-pr-123 in a second editor window or terminal ``` diff --git a/plugins/git/skills/pc-author/SKILL.md b/plugins/git/skills/pc-author/SKILL.md index b1d1db8..8b7c411 100644 --- a/plugins/git/skills/pc-author/SKILL.md +++ b/plugins/git/skills/pc-author/SKILL.md @@ -6,6 +6,7 @@ description: > shellcheck"). Not running, installing, or updating hooks -> `pc-run`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: devtools source_keys: - context7-pre-commit-com diff --git a/plugins/git/skills/pc-author/references/create-config.md b/plugins/git/skills/pc-author/references/create-config.md index 8adfdfb..c9ef9fd 100644 --- a/plugins/git/skills/pc-author/references/create-config.md +++ b/plugins/git/skills/pc-author/references/create-config.md @@ -15,7 +15,7 @@ flow's file is not needed here. `SKILL.md`'s three common gates still apply. inferring them from the project's name or README: ```bash - git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn + rtk git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn ``` 2. Read `references/hooks-by-language.md` and map the detected extensions to recommended hooks. diff --git a/plugins/git/skills/pc-author/references/modify-config.md b/plugins/git/skills/pc-author/references/modify-config.md index 83a0ae6..bfd268f 100644 --- a/plugins/git/skills/pc-author/references/modify-config.md +++ b/plugins/git/skills/pc-author/references/modify-config.md @@ -17,7 +17,7 @@ Read the existing `.pre-commit-config.yaml` before editing. Note any stale `rev` 1. Run a shallow extension scan, so the addition is judged against the languages actually present: ```bash - git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn + rtk git ls-files | grep -oE '\.[a-z]+$' | sort | uniq -c | sort -rn ``` 2. Read `references/hooks-by-language.md` for the correct repo URL, `rev` and recommended args diff --git a/plugins/git/skills/pc-run/SKILL.md b/plugins/git/skills/pc-run/SKILL.md index 82ebc7a..c81484a 100644 --- a/plugins/git/skills/pc-run/SKILL.md +++ b/plugins/git/skills/pc-run/SKILL.md @@ -8,6 +8,7 @@ description: > compatibility: Requires pre-commit installed and available on PATH. metadata: + version: "1.0.0" category: devtools source_keys: - context7-pre-commit-com @@ -20,7 +21,7 @@ allowed-tools: Bash Read - The `SKIP` env var takes exact hook `id` values, comma-separated with no spaces: `SKIP=check-yaml,gitleaks git commit -m "msg"`. A space after a comma silently skips nothing instead of erroring. - Never bypass a failing hook with `git commit --no-verify` (or `-n`). Hooks are the automated QA gate, so a bypassed commit pushes the failure downstream where it costs more — diagnose it instead. -- `- files were modified by this hook` is not a bug. A fixer hook rewrote a staged file, so the staged snapshot is stale and the commit is blocked on purpose. Re-stage and re-run the same commit: `git add -u && git commit`. Do NOT reach for `pre-commit install -f` here — it overwrites `.git/hooks/` and has nothing to do with re-staging. +- `- files were modified by this hook` is not a bug. A fixer hook rewrote a staged file, so the staged snapshot is stale and the commit is blocked on purpose. Re-stage and re-run the same commit: `rtk git add -u && rtk git commit`. Do NOT reach for `pre-commit install -f` here — it overwrites `.git/hooks/` and has nothing to do with re-staging. ## Gate — `pre-commit clean` diff --git a/plugins/git/skills/pc-run/references/failure-patterns.md b/plugins/git/skills/pc-run/references/failure-patterns.md index 8931ebf..5369f84 100644 --- a/plugins/git/skills/pc-run/references/failure-patterns.md +++ b/plugins/git/skills/pc-run/references/failure-patterns.md @@ -14,8 +14,8 @@ Cause: A fixer hook (e.g. `trailing-whitespace`, `end-of-file-fixer`, `pretty-fo Fix: Re-stage and recommit. ```bash -git add -u -git commit -m "same message" +rtk git add -u +rtk git commit -m "same message" ``` Do NOT reach for `pre-commit install -f` here. That flag overwrites existing hook files in `.git/hooks/`; it has nothing to do with re-staging. diff --git a/plugins/gitea/skills/gitea-files/SKILL.md b/plugins/gitea/skills/gitea-files/SKILL.md index 168e875..26265da 100644 --- a/plugins/gitea/skills/gitea-files/SKILL.md +++ b/plugins/gitea/skills/gitea-files/SKILL.md @@ -11,6 +11,7 @@ compatibility: Requires the Gitea MCP server configured with a token scoped to a is not actually required for any of this domain's five tools. metadata: + version: "1.0.0" category: gitea source_keys: - gitea-mcp-repo diff --git a/plugins/kyberforge/skills/agent-audit/SKILL.md b/plugins/kyberforge/skills/agent-audit/SKILL.md index 19abac3..cc923e0 100644 --- a/plugins/kyberforge/skills/agent-audit/SKILL.md +++ b/plugins/kyberforge/skills/agent-audit/SKILL.md @@ -7,6 +7,7 @@ description: > directory -> skill-audit. allowed-tools: Bash Read metadata: + version: "1.0.0" category: factory source_keys: - context7-websites-code-claude diff --git a/plugins/kyberforge/skills/agent-audit/references/description-quality.md b/plugins/kyberforge/skills/agent-audit/references/description-quality.md index eac9c27..0b360a3 100644 --- a/plugins/kyberforge/skills/agent-audit/references/description-quality.md +++ b/plugins/kyberforge/skills/agent-audit/references/description-quality.md @@ -27,15 +27,19 @@ where the body's flowchart specified two. Read the frontmatter before judging a single word. -- **`disable-model-invocation: true` or `user-invocable: false`** — the agent is hand-invoked. Its - description is never matched against user intent, so it is not a routing string. It carries **one - plain human-facing sentence** stating what the agent does. Audit it for that and nothing else. - Reporting a missing trigger clause, a missing boundary clause or absent indirect triggers on a - hand-invoked agent is a wrong finding, not a strict one. Both fields are Copilot-only and neither - is on the vendor-neutral APM allowlist, so this case arises in a Copilot `.agent.md` at - project/user scope and nowhere else. Its Claude Code counterpart has no equivalent field and stays - model-invoked, so the two halves of the pair carrying differently shaped descriptions is expected - there rather than a pair-consistency finding. +- **`disable-model-invocation: true`** — the agent is hand-invoked. Its description is never + matched against user intent, so it is not a routing string. It carries **one plain human-facing + sentence** stating what the agent does. Audit it for that and nothing else. Reporting a missing + trigger clause, a missing boundary clause or absent indirect triggers on a hand-invoked agent is a + wrong finding, not a strict one. The field is Copilot-only and not on the vendor-neutral APM + allowlist, so this case arises in a Copilot `.agent.md` at project/user scope and nowhere else. + Its Claude Code counterpart has no equivalent field and stays model-invoked, so the two halves of + the pair carrying differently shaped descriptions is expected there rather than a + pair-consistency finding. + `user-invocable: false` does not belong in this bullet: it only blocks manual invocation and is + independent of `disable-model-invocation` — an agent can be `user-invocable: false` and still + model-routed, in which case the three-part shape below still applies. It carries no + description-quality contract of its own and is out of this file's scope entirely. - **No such flag** — the agent is model-invoked and the rest of this file applies. ## The three-part shape diff --git a/plugins/kyberforge/skills/agent-author/SKILL.md b/plugins/kyberforge/skills/agent-author/SKILL.md index c6ca310..b81b5ae 100644 --- a/plugins/kyberforge/skills/agent-author/SKILL.md +++ b/plugins/kyberforge/skills/agent-author/SKILL.md @@ -6,6 +6,7 @@ description: > Not read-only review -> `agent-audit`. Not skills -> `skill-author`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: factory source_keys: - context7-websites-code-claude diff --git a/plugins/kyberforge/skills/apm-install/SKILL.md b/plugins/kyberforge/skills/apm-install/SKILL.md index 054d161..d576504 100644 --- a/plugins/kyberforge/skills/apm-install/SKILL.md +++ b/plugins/kyberforge/skills/apm-install/SKILL.md @@ -6,6 +6,7 @@ description: > authoring, publishing, auditing, or dependency installation for an apm package -> `apm-workflow`. metadata: + version: "1.0.0" category: apm source_keys: - context7-microsoft-apm diff --git a/plugins/kyberforge/skills/apm-workflow/SKILL.md b/plugins/kyberforge/skills/apm-workflow/SKILL.md index cd258b4..85e2f30 100644 --- a/plugins/kyberforge/skills/apm-workflow/SKILL.md +++ b/plugins/kyberforge/skills/apm-workflow/SKILL.md @@ -5,6 +5,7 @@ description: > the dependencies it declares, or an apm marketplace — even when the user does not say "apm". Not the apm binary or an agent runtime -> `apm-install`. metadata: + version: "1.0.0" category: apm source_keys: - context7-microsoft-apm diff --git a/plugins/kyberforge/skills/forge/SKILL.md b/plugins/kyberforge/skills/forge/SKILL.md index 860e9db..f63242a 100644 --- a/plugins/kyberforge/skills/forge/SKILL.md +++ b/plugins/kyberforge/skills/forge/SKILL.md @@ -8,6 +8,7 @@ description: > already named — invoke `skill-author`, `agent-author` or `apm-workflow` directly. metadata: + version: "1.0.0" category: factory source_keys: - claude-code-subagents-docs diff --git a/plugins/kyberforge/skills/skill-audit/SKILL.md b/plugins/kyberforge/skills/skill-audit/SKILL.md index 1a66612..9e45c2d 100644 --- a/plugins/kyberforge/skills/skill-audit/SKILL.md +++ b/plugins/kyberforge/skills/skill-audit/SKILL.md @@ -7,6 +7,7 @@ description: > skill-author. allowed-tools: Bash Read metadata: + version: "1.0.0" category: factory source_keys: - agentskills-home diff --git a/plugins/kyberforge/skills/skill-audit/references/validation-scripts.md b/plugins/kyberforge/skills/skill-audit/references/validation-scripts.md index a1ddb24..1c50e36 100644 --- a/plugins/kyberforge/skills/skill-audit/references/validation-scripts.md +++ b/plugins/kyberforge/skills/skill-audit/references/validation-scripts.md @@ -105,6 +105,19 @@ Three ways to read the result wrong: is not a directory, a directory holding no `SKILL.md`, a missing or extra argument, and an absent `python3` all exit **2** with a message on stderr. Exit 2 means the script never ran — report it as an unaudited dimension, never as a pass and never as a finding. Exit 1 is findings. +- **A check-9 INFO — `'' changed for '' since ` — means go read, not just relay.** + Check 9 diffs the current `references/sources.md` against a base ref (default: the merge base with + `origin/main`) and flags a slug whose `Description` or `Contributing files` text differs. It is + structurally incapable of telling you whether the new wording is still *true* — it only detects + that the text changed — so when this INFO fires, open the Contributing files it names and the + document named in that slug's `Research doc:` field, and confirm by reading whether the (possibly + strengthened) claim genuinely holds. This is the one provenance finding this script cannot verify + for you: every other check here is a structural fact you can relay as-is, but check 9's job is + only to tell you *where* to spend that reading effort, not to replace it. Acknowledging the INFO + without opening those files is not auditing it. A single INFO naming "no base ref could be + resolved" or "no repo root above the skill directory" is the same graceful-skip pattern as every + other check here that cannot run — treat it as an unaudited dimension for that reason, not as a + finding about the skill. - **`vale` reports `0 files`.** Treat the pass as NOT RUN, not as clean, and fall back to full Step 3 judgment for the dimensions it would have covered. The bundled `Kyberforge` style is scoped by glob in `assets/vale/.vale.ini`; a file outside those globs is silently not linted. diff --git a/plugins/kyberforge/skills/skill-audit/scripts/validate-provenance.sh b/plugins/kyberforge/skills/skill-audit/scripts/validate-provenance.sh index 4ed3629..9cec436 100755 --- a/plugins/kyberforge/skills/skill-audit/scripts/validate-provenance.sh +++ b/plugins/kyberforge/skills/skill-audit/scripts/validate-provenance.sh @@ -3,12 +3,19 @@ set -euo pipefail usage() { cat < +Usage: validate-provenance.sh [--base-ref=] Validate that a skill's sources provenance chain is complete and internally consistent. Arguments: - skill-dir Path to the skill directory to validate. + skill-dir Path to the skill directory to validate. + --base-ref=REF Git ref to diff references/sources.md against for check 9. + Defaults to \`git merge-base HEAD origin/main\`. Override this + when origin/main is not the right comparison point (a fork, + a long-lived branch, a mirror with a different remote name). + The VALIDATE_PROVENANCE_BASE_REF environment variable is an + equivalent, lower-precedence way to set it — the flag wins + if both are given. Exit codes: 0 All checks passed (or nothing to validate) @@ -38,6 +45,12 @@ Checks performed: resolved; a path that still does not resolve is reported as an INFO saying checks 7 and 8 did not run, never skipped silently. 8 Extracted non-(none) slug in research doc present in sources.md + 9 Description or Contributing files text changed since --base-ref (INFO + only — a bash script cannot verify the claim is still TRUE, only that it + changed; the auditor reads the named files to check that). A slug absent + at the base ref is a creation, not a change, and is not flagged. When the + base ref cannot be resolved at all, this is announced as ONE INFO for the + whole check, never a silent skip. Checks 7 and 8 apply ONLY when the Research doc value names a research SOURCE INDEX — a file whose basename is sources.md, whose H2 headings ARE source @@ -52,13 +65,31 @@ if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then exit 0 fi +# --base-ref= is the only recognised flag, for check 9's base-ref +# override. It is pulled out before the positional-count checks below so it +# never counts against them — a caller passing it alongside skill-dir sees +# the same argument-count behaviour as one who does not pass it at all, and a +# genuinely extra positional argument is still rejected. +declare -a POSITIONAL_ARGS=() +BASE_REF_OVERRIDE="" +for arg in "$@"; do + case "$arg" in + --base-ref=*) + BASE_REF_OVERRIDE="${arg#--base-ref=}" + ;; + *) + POSITIONAL_ARGS+=("$arg") + ;; + esac +done + # Usage and environment problems exit 2, findings exit 1. See the usage text # above for why the two must not share a code. This is a deliberate divergence # from validate.sh, which has no 2 tier: validate.sh always prints PASS lines, # so a usage error there is visibly not a findings report. This script prints # NOTHING on a clean run, so exit 1 plus empty stdout was the only signal a # caller got either way. -if [[ $# -lt 1 ]]; then +if [[ ${#POSITIONAL_ARGS[@]} -lt 1 ]]; then echo "Error: skill-dir is required." >&2 echo "" >&2 usage >&2 @@ -67,13 +98,20 @@ fi # Extra positional arguments were silently dropped, so a typo'd flag or a second # path looked like it had been honoured. -if [[ $# -gt 1 ]]; then - echo "Error: expected exactly one argument, got $#: $*" >&2 +if [[ ${#POSITIONAL_ARGS[@]} -gt 1 ]]; then + echo "Error: expected exactly one argument, got ${#POSITIONAL_ARGS[@]}: ${POSITIONAL_ARGS[*]}" >&2 echo "" >&2 usage >&2 exit 2 fi +SKILL_DIR_ARG="${POSITIONAL_ARGS[0]}" + +# The flag wins over the environment variable when both are given; either is +# empty-string when unset, and an empty string tells the Python body to fall +# back to `git merge-base HEAD origin/main`. +BASE_REF="${BASE_REF_OVERRIDE:-${VALIDATE_PROVENANCE_BASE_REF:-}}" + # python3 is a HARD dependency. Without this preflight a missing interpreter # produced 'line NN: python3: command not found' and exit 127 — an exit code no # caller maps to anything, from a message that names this script's line number @@ -91,24 +129,25 @@ fi # references/validation-scripts.md explicitly told the auditor to read as a # pass. A typo'd target was therefore indistinguishable from a clean skill. # vale-wrap.sh hard-errors on a nonexistent path for exactly this reason. -if [[ ! -d "$1" ]]; then - echo "Error: not a directory: $1" >&2 +if [[ ! -d "$SKILL_DIR_ARG" ]]; then + echo "Error: not a directory: $SKILL_DIR_ARG" >&2 echo " Why: a nonexistent target would otherwise report a silent pass." >&2 echo " Fix: pass the path of the skill directory to validate." >&2 exit 2 fi -if [[ ! -f "$1/SKILL.md" ]]; then - echo "Error: not a skill directory (no SKILL.md): $1" >&2 +if [[ ! -f "$SKILL_DIR_ARG/SKILL.md" ]]; then + echo "Error: not a skill directory (no SKILL.md): $SKILL_DIR_ARG" >&2 echo " Why: a directory with no SKILL.md has no provenance chain to validate, and reporting that as a pass hides the wrong-target mistake." >&2 echo " Fix: pass the skill directory itself, not its parent or its references/ subdirectory." >&2 exit 2 fi -python3 -u - "$1" <<'PYTHON' +python3 -u - "$SKILL_DIR_ARG" "$BASE_REF" <<'PYTHON' import sys import os import re +import subprocess # Output is UTF-8 for the same reason input is: under LC_ALL=C the streams # default to ASCII, and every finding this script prints contains an em dash. @@ -125,6 +164,11 @@ skill_dir = os.path.abspath(sys.argv[1]) sources_md_path = os.path.join(skill_dir, "references", "sources.md") refs_dir = os.path.join(skill_dir, "references") +# Empty string (the shell side passes "" when neither --base-ref nor +# VALIDATE_PROVENANCE_BASE_REF was given) means: resolve the default via +# `git merge-base HEAD origin/main` at check-9 time, below. +base_ref_override = sys.argv[2] if len(sys.argv) > 2 else "" + # --- Helpers --- # The trailing character class used to be CONSUMING — `[^`\n]` — so a @@ -444,6 +488,81 @@ def find_repo_root(start_dir): return None current = parent +# --- Check 9 helpers --------------------------------------------------- +# Check 9 needs a raw field VALUE (as text, to diff against an earlier +# version), not the parsed structure parse_contributing_files() and +# parse_status() return — a Contributing files list that reordered its +# entries without changing them is not what this check is looking for, but +# neither is normalizing so hard that a genuine rewrite disappears. Raw text, +# whitespace-normalized, is the middle ground. + +def run_git(args, cwd): + """Run `git ` in cwd. Returns (returncode, stdout, stderr) — never + raises, so a missing git binary or an unexpected OSError is just another + non-zero result the caller folds into "could not run", not a crash.""" + try: + result = subprocess.run( + ["git"] + args, cwd=cwd, capture_output=True, text=True, + encoding="utf-8", errors="replace" + ) + return result.returncode, result.stdout, result.stderr + except OSError as exc: + return 1, "", str(exc) + +def ref_exists(ref, cwd): + """True when ref resolves to a commit in the repo at cwd.""" + rc, _out, _err = run_git(["rev-parse", "--verify", "--quiet", ref + "^{commit}"], cwd) + return rc == 0 + +def find_slug_block(content, slug): + """The raw text of a '## ' entry's body, or None if no such H2.""" + pattern = re.compile( + r'^## ' + re.escape(slug) + r'\s*\n(.*?)(?=^## |\Z)', + re.MULTILINE | re.DOTALL + ) + m = pattern.search(content) + return m.group(1) if m else None + +def parse_field_raw(content, slug, field_name): + """Raw text of a '**:**' field under a slug H2. + + Mirrors the two authored shapes parse_contributing_files() and + parse_status() already handle (inline value on the same line, or a + bare heading followed by '- ' bullets), but returns text rather than a + parsed structure, because check 9 diffs wording, not semantics. + + Returns None when the H2 itself is absent (the slug did not exist at + this content's revision) or the field is absent — both read as "no + earlier claim to compare against" to the caller, which is deliberate: + a field appearing for the first time is a creation, not a change. + """ + block = find_slug_block(content, slug) + if block is None: + return None + inline_re = re.compile(r'^\- \*\*' + re.escape(field_name) + r':\*\* (.+)$', re.MULTILINE) + im = inline_re.search(block) + if im: + return im.group(1).strip() + heading_re = re.compile(r'^\*\*' + re.escape(field_name) + r':\*\*\s*$', re.MULTILINE) + hm = heading_re.search(block) + if not hm: + return None + lines = [] + for line in block[hm.end():].splitlines(): + line = line.strip() + if not line: + if lines: + break + continue + if not line.startswith("- "): + break + lines.append(line[2:].strip()) + return ", ".join(lines) if lines else None + +def normalize_field_text(value): + """Collapse whitespace so reformatting alone never registers as a change.""" + return re.sub(r'\s+', ' ', value).strip() + findings = [] has_fail = False @@ -859,6 +978,89 @@ for rd_abs, (rd_rel, known_slugs, rd_content) in research_docs_seen.items(): f"Add '## {rd_slug}' to references/sources.md or mark it as '(none)' in the research doc's Contributing files." ) +# --- Check 9: Description / Contributing files changed since --base-ref --- +# A structural fact — the field's TEXT differs from an earlier revision — is +# all git can tell us. Whether the (possibly stronger) new wording is still +# TRUE is a semantic question no parser here can answer; that is what sent +# the earlier literal-text approaches (flagging a named-but-missing filename) +# to 3/3 false positives against the real corpus without even catching the +# bug that motivated this check. So check 9 does the one thing git reliably +# can: detect the change, and hand the auditor the slug and field to go read, +# never a verdict on the claim itself. Always INFO, never FAIL. +if repo_root is None: + emit_info( + "Check 9 skipped — no repo root above the skill directory", + "references/sources.md", + "No ancestor of the skill directory contains a .git entry, so there is no git history to diff " + "references/sources.md against. Check 9 did not run for any slug in this skill. " + "Run this script against a skill inside a checkout to get this check." + ) +else: + resolved_base_ref = base_ref_override.strip() + resolve_error = None + if not resolved_base_ref: + rc, mb_out, mb_err = run_git(["merge-base", "HEAD", "origin/main"], repo_root) + if rc == 0 and mb_out.strip(): + resolved_base_ref = mb_out.strip() + else: + resolve_error = ( + "`git merge-base HEAD origin/main` could not resolve a base ref" + + (f" ({mb_err.strip()})" if mb_err.strip() else "") + + " — there may be no origin/main remote, HEAD may be detached, or the clone may be shallow." + ) + elif not ref_exists(resolved_base_ref, repo_root): + resolve_error = f"--base-ref value '{resolved_base_ref}' does not resolve to a commit in this repository." + + if resolve_error: + emit_info( + "Check 9 skipped — no base ref could be resolved", + "references/sources.md", + resolve_error + " Check 9 did not run for any slug in this skill. " + "Pass --base-ref=, or set the VALIDATE_PROVENANCE_BASE_REF environment variable, " + "to compare against something other than origin/main." + ) + else: + sources_md_relpath = os.path.relpath(sources_md_path, repo_root) + rc, old_sources_content, show_err = run_git( + ["show", f"{resolved_base_ref}:{sources_md_relpath}"], repo_root + ) + if rc != 0: + # The base ref resolved fine, but references/sources.md did not + # exist there at all — the whole file is new. Every entry in it + # is therefore a creation, not a change: nothing to flag, and + # this is not a structural failure of the check, so no INFO + # either. Same reasoning applies per-slug below when the ref + # resolved but a given '## ' heading did not exist yet. + old_sources_content = None + + if old_sources_content is not None: + for slug in unique_slugs: + changed_fields = [] + for field_name in ("Description", "Contributing files"): + old_value = parse_field_raw(old_sources_content, slug, field_name) + new_value = parse_field_raw(sources_content, slug, field_name) + if old_value is None or new_value is None: + # No earlier claim to compare against — a brand-new + # entry, or a field that did not exist yet at the + # base ref. That is a creation, not a change, and is + # never flagged. + continue + if normalize_field_text(old_value) != normalize_field_text(new_value): + changed_fields.append(field_name) + if changed_fields: + field_list = " and ".join(changed_fields) + emit_info( + f"'{field_list}' changed for '{slug}' since {resolved_base_ref}", + f"references/sources.md (## {slug})", + f"The '## {slug}' entry's {field_list} text differs from the version at " + f"{resolved_base_ref}. This script can confirm the entry is internally " + f"consistent, but it cannot verify whether the claim itself is still true — a " + f"retrofit once turned an honest hedge into an unsupported confident claim and " + f"every structural check here passed it silently. Re-read the upstream research " + f"doc named in this entry's Research doc field and the Contributing files it " + f"lists, and confirm by hand that the wording still holds." + ) + print_findings() sys.exit(1 if has_fail else 0) PYTHON diff --git a/plugins/kyberforge/skills/skill-author/SKILL.md b/plugins/kyberforge/skills/skill-author/SKILL.md index 33228c5..6d35dfc 100644 --- a/plugins/kyberforge/skills/skill-author/SKILL.md +++ b/plugins/kyberforge/skills/skill-author/SKILL.md @@ -6,6 +6,7 @@ description: > Not read-only review -> `skill-audit`. Not agent files -> `agent-author`. allowed-tools: Bash Read Write Edit metadata: + version: "1.0.0" category: factory source_keys: - agentskills-home @@ -56,6 +57,6 @@ Gates `/skill-audit` enforces in both flows: Run `/skill-audit` on the resolved skill directory; resolve every FAIL before reporting done. It checks name-to-directory match, placeholders, both size budgets, boundary-target resolution and script hygiene — do not hand-check those. Hand-check the one thing it misses: an empty body reports `PASS SKILL.md body word count 0 (ADR-0020 target: 600)`, so confirm at least one non-empty section exists. -With `metadata.version` present, bump the **minor** version on create (new skills start at `0.1.0`) and the **patch** version on improve. +Bump `metadata.version`: the **minor** version on create (new skills start at `0.1.0`) and the **patch** version on improve. **Commit verification.** Inside a git worktree: once the audit is clean, run `git add` and `git commit` — do not stop at staging. Re-run `git log --oneline -1` and confirm the hash changed from Step 1's. A non-empty `git diff --stat` is not proof: staged-but-uncommitted work is part of no commit and is silently lost if the tree is cleaned up. Report done only once the hash has changed. Outside a worktree (a skill under `~/.claude/skills/`, say) nothing is committable — report done on a clean audit, naming that as the reason. diff --git a/plugins/kyberforge/skills/skill-author/references/create.md b/plugins/kyberforge/skills/skill-author/references/create.md index 677425b..9e754cb 100644 --- a/plugins/kyberforge/skills/skill-author/references/create.md +++ b/plugins/kyberforge/skills/skill-author/references/create.md @@ -101,8 +101,10 @@ plain sentence and `disable-model-invocation: true` instead. - `license` — include when distributing the skill externally - `compatibility` — include if the skill requires specific tools, runtimes, or network access (max 500 characters) -- `metadata` — key-value map; use `author`, `version`, `category`; add `source_keys` now (Step 6) - if research sources are in context +- `metadata` — key-value map. `version` is **required** on every skill (ADR-0022), seeded at + `"1.0.0"` for a retrofitted skill with no prior version and at `"0.1.0"` for a newly created + skill; `author` and `category` stay optional; add `source_keys` now (Step 6) if research sources + are in context - `allowed-tools` — space-separated pre-approved tools; reduces permission prompts (experimental — support varies by client) - `disable-model-invocation` — hand-invoked skills only diff --git a/plugins/kyberforge/skills/skill-author/references/retrofit.md b/plugins/kyberforge/skills/skill-author/references/retrofit.md index 37fa55d..337bb1d 100644 --- a/plugins/kyberforge/skills/skill-author/references/retrofit.md +++ b/plugins/kyberforge/skills/skill-author/references/retrofit.md @@ -105,6 +105,16 @@ them for you. After every retrofit that adds, removes or renames a file: zero. - [ ] Re-run `/skill-audit` and confirm its `### Provenance` dimension does not report the new file as missing `source_keys`. +- [ ] **Compression must not add authority the source text didn't have.** The bullet above is + about a `sources.md` entry going *stale* — Contributing files left uncited after content + moves. This is a distinct failure: a compression or rewrite pass that upgrades an honest + hedge in a Description into an unsupported confident claim, without the underlying source + having changed at all — "no forge-specific content drawn directly from it beyond that" + quietly becoming "Grounds Step 2's dispatch table." Nothing in `/skill-audit`'s structural + checks catches this; a bash script can verify an entry is internally consistent, never + whether the claim is *true*. If a retrofit strengthens or otherwise changes the wording of a + provenance claim, re-read the upstream research doc first and confirm the stronger wording + is actually still true before committing it. ## Worked example — a description retrofit -- 2.43.0 From 4f4b55b0be81294e752167f8d6f65fe7f0866609 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:44:28 +0000 Subject: [PATCH 06/12] chore: refresh apm.lock.yaml to match the deployed install state kyberforge's SessionStart hook updates this lockfile automatically when apm reports the local install behind; it had drifted since before this branch existed (generated_at predates 598a7c3). Re-ran apm install to bring the local .claude/ deployment in line with what the lockfile now expects -- apm audit --ci passes 10/10 clean. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- apm.lock.yaml | 1110 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 786 insertions(+), 324 deletions(-) diff --git a/apm.lock.yaml b/apm.lock.yaml index ca28793..4056018 100644 --- a/apm.lock.yaml +++ b/apm.lock.yaml @@ -1,42 +1,51 @@ lockfile_version: '1' -generated_at: '2026-08-30T11:38:46.419301+00:00' +generated_at: '2026-09-01T14:55:26.980675+00:00' apm_version: 0.28.0 dependencies: - repo_url: Defame1297/holocron name: bin host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.1.5 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.1.6 virtual_path: plugins/bin is_virtual: true package_type: marketplace_plugin deployed_files: - .claude/skills/caveman + - .claude/skills/caveman/README.md - .claude/skills/caveman/SKILL.md - .claude/skills/diagnose + - .claude/skills/diagnose/README.md - .claude/skills/diagnose/SKILL.md - - .claude/skills/diagnose/scripts/hitl-loop.template.sh + - .claude/skills/diagnose/assets/hitl-loop.template.sh + - .claude/skills/diagnose/references/feedback-loops.md + - .claude/skills/diagnose/references/regression-seams.md - .claude/skills/grill-me + - .claude/skills/grill-me/README.md - .claude/skills/grill-me/SKILL.md - .claude/skills/grill-with-docs - .claude/skills/grill-with-docs/ADR-FORMAT.md - .claude/skills/grill-with-docs/CONTEXT-FORMAT.md + - .claude/skills/grill-with-docs/README.md - .claude/skills/grill-with-docs/SKILL.md - .claude/skills/improve-codebase-architecture - .claude/skills/improve-codebase-architecture/DEEPENING.md - .claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md - .claude/skills/improve-codebase-architecture/LANGUAGE.md + - .claude/skills/improve-codebase-architecture/README.md - .claude/skills/improve-codebase-architecture/SKILL.md - .claude/skills/prototype - - .claude/skills/prototype/LOGIC.md + - .claude/skills/prototype/README.md - .claude/skills/prototype/SKILL.md - - .claude/skills/prototype/UI.md + - .claude/skills/prototype/references/logic.md + - .claude/skills/prototype/references/ui.md - .claude/skills/research - - .claude/skills/research/META.md + - .claude/skills/research/README.md - .claude/skills/research/SKILL.md - .claude/skills/research/references/file-format.md - .claude/skills/research/references/topics.md - .claude/skills/tdd + - .claude/skills/tdd/README.md - .claude/skills/tdd/SKILL.md - .claude/skills/tdd/deep-modules.md - .claude/skills/tdd/interface-design.md @@ -46,49 +55,64 @@ dependencies: - .claude/skills/triage - .claude/skills/triage/AGENT-BRIEF.md - .claude/skills/triage/OUT-OF-SCOPE.md + - .claude/skills/triage/README.md - .claude/skills/triage/SKILL.md - .claude/skills/write-docs + - .claude/skills/write-docs/README.md - .claude/skills/write-docs/SKILL.md - .claude/skills/zoom-out + - .claude/skills/zoom-out/README.md - .claude/skills/zoom-out/SKILL.md deployed_file_hashes: - .claude/skills/caveman/SKILL.md: sha256:b4bb6fe3bf3da222993ca0aee5e7c6f5368b182dd30ce1172e8f8e3280eb7052 - .claude/skills/diagnose/SKILL.md: sha256:28886402bbfa0470248086eab9106a103b964b76ae9496e63ff0c8a6761b6d13 - .claude/skills/diagnose/scripts/hitl-loop.template.sh: sha256:b2932630950e5210075bcd6f850e5accf30c101c5367b29eac3a29b4dd8084c8 - .claude/skills/grill-me/SKILL.md: sha256:74147eb6010a65957efef2b9e0f0b3ff935c1def7fc117697151b1d0f3610556 + .claude/skills/caveman/README.md: sha256:f512fff0ddf11ae216c6806d4c2ad31e130de6ed360c89a39787c2ff6f4a2c62 + .claude/skills/caveman/SKILL.md: sha256:817ed2655c2188c5c0b1e1dc5f4e762e699ad7fcd2a056e4ef73d5f6601dd1f8 + .claude/skills/diagnose/README.md: sha256:ac59366a09f74bce57d45ebe06e8afb7d12166351a4756a7b89f71ab9e0fc450 + .claude/skills/diagnose/SKILL.md: sha256:0844ba2bbede408be2e54a20cacd2e280c275c11ba45173381659a76f0c54cad + .claude/skills/diagnose/assets/hitl-loop.template.sh: sha256:b2932630950e5210075bcd6f850e5accf30c101c5367b29eac3a29b4dd8084c8 + .claude/skills/diagnose/references/feedback-loops.md: sha256:5ed81b331fcf7dfc229b92be7250fd786064f8363dbf55bf6b6e5e9b5f5e1daf + .claude/skills/diagnose/references/regression-seams.md: sha256:fdb24c383628d239e54424f72258860612d6fe8a1fc5d0057ab5073628cc71f4 + .claude/skills/grill-me/README.md: sha256:4acbda2175bf003f1106a6912cf2cfb8d3d2623f391b1be6f417beb084a65b05 + .claude/skills/grill-me/SKILL.md: sha256:0af060d6813ed59547be14c7dfd544d5b626c852f7ec0f7213c27c7ec0ae76c1 .claude/skills/grill-with-docs/ADR-FORMAT.md: sha256:f1f36cd3f8d3b6474ddd5855da4e233bfc4ae1a1c5024909ccf11871819a41b2 .claude/skills/grill-with-docs/CONTEXT-FORMAT.md: sha256:8f6baaa3b1c91644bd7c600196b1aee781d5f525c7c345db8cdfbfb368329a05 - .claude/skills/grill-with-docs/SKILL.md: sha256:c7176600a8bffc9f359102cb041b6686387618b8e1434ba484dd708d45df6d5e + .claude/skills/grill-with-docs/README.md: sha256:c94a826df0f85f17957b9fa2fe73d52ab1ff29d7685658b994721378eeea811e + .claude/skills/grill-with-docs/SKILL.md: sha256:26d06ea58adae5fa6ca8b406cc4a8d13ec3c9780bfb283c29ef0a8f8845f26f9 .claude/skills/improve-codebase-architecture/DEEPENING.md: sha256:9577485f4fc32c0267639a9151bb41c8af0f8f6086e4bf8b84d5b236e30604e9 .claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md: sha256:678c3e34f1339015053212b3316bf0b676c70aa251050a0613667d4e755fb35e .claude/skills/improve-codebase-architecture/LANGUAGE.md: sha256:6feca2140439c54a774749e8367f18350899ff69c777144ed2248cd4407949fa - .claude/skills/improve-codebase-architecture/SKILL.md: sha256:318b3df6a557f3a9216e6c32813d543301fa51954ea79c87edb95e1297213584 - .claude/skills/prototype/LOGIC.md: sha256:da91dc92195c00d5dc33863b8c1a030998025a0f8583ebf2babd770825b7f70c - .claude/skills/prototype/SKILL.md: sha256:913df144c79658394b7ccc984858103a27553eeff9a8bf93dc51486603259d0f - .claude/skills/prototype/UI.md: sha256:d76d565149ee50456c5ddc5e29c27fec8737637874fe5c37d970db085a200b27 - .claude/skills/research/META.md: sha256:81a31d9ba20988b07bd4e141f0a7369d4dda302772d62809cc8b223ca1fbb84f - .claude/skills/research/SKILL.md: sha256:9ca6b3b8c9c1d04f93a6ef55149d0eecc9ffa82a28db9fb3f9b588c661b1b747 + .claude/skills/improve-codebase-architecture/README.md: sha256:813332e95450c7e3e4c892f5edf777236d213fca40f3d1ff30ac7a644f2ea258 + .claude/skills/improve-codebase-architecture/SKILL.md: sha256:4e54cc00ec301027f640ac5dd1877b0d9ec94c16e784da0cdab25e220167e53d + .claude/skills/prototype/README.md: sha256:4f09d8742b017da6da3aa87d55a26937dda9ad2a3dcc0e45df62e26d6be10983 + .claude/skills/prototype/SKILL.md: sha256:873d3c3bf9e46af5e61598a9030ac0304b58f900f48f102e7322c825d5fe435a + .claude/skills/prototype/references/logic.md: sha256:05c193ce98ee01ed3d7558891efa97c8f6a3b61605f24d18f9d405aef7d1b58d + .claude/skills/prototype/references/ui.md: sha256:bff1746d1f0c5ef42d8c2fac33637249a78a6c0c92cfdf906da933e2e1104ec6 + .claude/skills/research/README.md: sha256:b5fe17aea6a398ceaeebcab9cb2c31ff8fcc806d5793a257916dc16b6ecb9933 + .claude/skills/research/SKILL.md: sha256:245cec403e83b8c7fbc0f17e684858d49f06d35a3bcbb5f967f81c4efe5bdafc .claude/skills/research/references/file-format.md: sha256:29d5583beaa531d26895c54def112039730490c312401648a6bdb7dd5278fb3c .claude/skills/research/references/topics.md: sha256:757abb7b6be44c3d3c0dd1f4818a344e08877810d36bf8be60ea7189cba8d12f - .claude/skills/tdd/SKILL.md: sha256:af059705061156fd4845ddbb736fe92b564118ac5f03551e09ef9e8f6d970638 + .claude/skills/tdd/README.md: sha256:ee7c9de4eb494f8a0e4e67153a5b44b560f7e53cc35f5ebdfbeb6dfa5bd1ed16 + .claude/skills/tdd/SKILL.md: sha256:46bc2a4c55b15e96fdd002167f37b43245e64fcbecb61daed11eac6e0d026da8 .claude/skills/tdd/deep-modules.md: sha256:f2123700bf953db1740625686c75bdd145efd486357c47c6818c869fee657a32 .claude/skills/tdd/interface-design.md: sha256:764c5ff0e3fa6b4ab7095eb65ccc7201e090baf19fa16051dfdb72c06d27417d .claude/skills/tdd/mocking.md: sha256:3ceb807fdf4a47d6a93d4d9a891e5ba6d362a6247bd08adc451feebfc17361ef .claude/skills/tdd/refactoring.md: sha256:54fced22dd1911b7094c3fe7979b7c1a40d40be307482c4adf7dc0588f27d6cc .claude/skills/tdd/tests.md: sha256:e12182f5c4c6a844b7c6ab4b8d2623b642aaaae5460fe58ed087efd4f3d5fb8a - .claude/skills/triage/AGENT-BRIEF.md: sha256:1c71c747aa97d938f75ec7a4b8fe87451763b38a3ce6348acf2b222e5819b2e5 + .claude/skills/triage/AGENT-BRIEF.md: sha256:e34b7e9359b8b2b95b4d9795864f2a8ef5ef4f60b3632ddcb5563937110c71e0 .claude/skills/triage/OUT-OF-SCOPE.md: sha256:8ed8cf27833444060c81b3961a83c0e3d8e6cf2fcb2ddf6f8b07c6655cbb0d85 - .claude/skills/triage/SKILL.md: sha256:b819f0285e4e5814ac6472d0217f07dc9f23d2fdae3ebb0dd31d98360d8ac029 - .claude/skills/write-docs/SKILL.md: sha256:0d06d0f6836a67532497ea61bd5a1294a8d80f529bf1ffb5c4b1fdc72e9cb51a + .claude/skills/triage/README.md: sha256:9144c8d3262ad42f09d430e4cad17c16310919d68a91c17ac36f1285f6b4110b + .claude/skills/triage/SKILL.md: sha256:42042bf7c3e6392d1ff0a0536fe0692fa710d6818e2501db77c7f22fa6e423cb + .claude/skills/write-docs/README.md: sha256:6d6310785603c1f4653be2ae9ffb37008cbe22eee49aed02ac8076ab20f95bcc + .claude/skills/write-docs/SKILL.md: sha256:25af5dc9e67a0755bc7a2cb99a1008156ba1fd17b283bdb5cc82dfccdb834421 + .claude/skills/zoom-out/README.md: sha256:5c80fbcf7fc6ee5117872b146aacd630a3d2f2d86693e06aef2e3c8eea9115cf .claude/skills/zoom-out/SKILL.md: sha256:2a6894c7f9b1c9c55f451c625a834c4f377e217b623a85280e55db5fe9cacf48 - content_hash: sha256:d7cca4972651b241a5450679289fdb6f0e3a37aef9dff0498cb4b3340b048781 + content_hash: sha256:7c568135b260c8fed6d369afeefddfa57f9979590291447007811941d87bb6b4 declared_license: MIT exec_status: gated_pending_approval - repo_url: Defame1297/holocron name: core host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.1.1 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.1.2 virtual_path: plugins/core is_virtual: true package_type: marketplace_plugin @@ -109,33 +133,35 @@ dependencies: - .claude/skills/provider-adapter-author - .claude/skills/provider-adapter-author/README.md - .claude/skills/provider-adapter-author/SKILL.md + - .claude/skills/provider-adapter-author/references/provider-matrix.md - .claude/skills/provider-adapter-author/references/sources.md - .claude/skills/provider-adapter-author/scripts/README.md - .claude/skills/provider-adapter-author/scripts/validate-adapter.sh deployed_file_hashes: - .claude/skills/agentsmd-audit/README.md: sha256:5d487aadb0424eb162f19454488e3b923180163cf1a543bb977b6969ae7a6849 - .claude/skills/agentsmd-audit/SKILL.md: sha256:f4e1d3f1fa79ebd4c2c874dfb2fe1b86834c9ae708ab3f0a3fa07be39e90b552 + .claude/skills/agentsmd-audit/README.md: sha256:b177cae5eca7326850986b502bd5bf3c2c5949fddc124c70a6a98e8c4d3dc7a8 + .claude/skills/agentsmd-audit/SKILL.md: sha256:f231a143f71a89a4ccbbf6d1579ea45c071b4f251a4b97e07c70d001ab7ba0f5 .claude/skills/agentsmd-audit/references/sources.md: sha256:ce13d263414c4c8ea96a33a9d3e0d5535c3100fb1e54a26d2bfe218fc7cd5974 .claude/skills/agentsmd-audit/scripts/README.md: sha256:40a7e90e0823a6caaa0276e8d13a3c1bdc7afc533912166aad3454b979824d6a .claude/skills/agentsmd-audit/scripts/validate-drift.sh: sha256:941e521498fa77b483529a73afc13d1d1630876d9035bd3bd020ac3bc3e5a18a .claude/skills/agentsmd-audit/scripts/validate-secrets.sh: sha256:2b53d9d7d0891da4d83ddfec759dcdd7429468360dbc238c0b7e8af816054241 .claude/skills/agentsmd-audit/scripts/validate-structure.sh: sha256:21507848d60b341165880294feb3a2f80dec55b1814b24e94647988da1fdfdd7 .claude/skills/agentsmd-author/README.md: sha256:096adbfc44e87da5dd8a8ad0e5eebc0cf4b9d515ab7d7fde4ec80ff3515bfbc7 - .claude/skills/agentsmd-author/SKILL.md: sha256:c32b9fe1cc7966d21d1ec504396d492afa53eb6369bd3b2678aed4ba92f331f8 + .claude/skills/agentsmd-author/SKILL.md: sha256:cf9a33c658cbe153391072872cefe403762b37c9ddc74d7c6f64ac6e08dd0f8b .claude/skills/agentsmd-author/references/content-guide.md: sha256:1b10c956254c949492c2993991c5fd86417db8b64aefbc45695087bb9c021e36 .claude/skills/agentsmd-author/references/sources.md: sha256:aecbe65ba9526f694534989cbb516c65a55f75553195753566abccd6841359fe - .claude/skills/provider-adapter-author/README.md: sha256:9aa132d5ffa7f249fa4c8f0e90f8505c1f1d0dcdd681e7930e5b0236407038b5 - .claude/skills/provider-adapter-author/SKILL.md: sha256:7d2d9c9555373fdac86683c517fcccca1d090347c9c1d13f91942763219d2053 - .claude/skills/provider-adapter-author/references/sources.md: sha256:45dfe2ff95744d7a00fa5b75be216562ff84047f21588ef244e89bdc2e5ae1bb - .claude/skills/provider-adapter-author/scripts/README.md: sha256:196aa7752b2df4710b397e1927f68b0b966caa8a3b1006122ef6e184882af01b - .claude/skills/provider-adapter-author/scripts/validate-adapter.sh: sha256:519c8ab3d33884821a6090ec5ba0322ec1594f9c1ca388b44279133a1e0fa9be - content_hash: sha256:df3239f8ebc54ecbf4d91325bfd056cbd8919f3b20f85721906c9de8776c4927 + .claude/skills/provider-adapter-author/README.md: sha256:ad6d674667fb810823a2b2115a9d6740b1dbde06af23e6315c6b4fbd44097823 + .claude/skills/provider-adapter-author/SKILL.md: sha256:7e22858832bf95cce89cc5d3a3044bb0b811deed3c3974351bce040629cec59e + .claude/skills/provider-adapter-author/references/provider-matrix.md: sha256:30d712d76530dda0a82d600c710e43fa856537ba17391fb8fc8b4304766b706c + .claude/skills/provider-adapter-author/references/sources.md: sha256:5cf7ded132beeed77b2069602015852bf18757fe9cd203c3e9c3e9064f8185bf + .claude/skills/provider-adapter-author/scripts/README.md: sha256:79095c5be4c3abc937053f1a0977fb6cf737111061fde561973c81f8e2192529 + .claude/skills/provider-adapter-author/scripts/validate-adapter.sh: sha256:aff693f69b987fe74a5d4c60368118dae7595c087d0de9691f5905e62ae3e1c9 + content_hash: sha256:93afd146bf812ab846c81dc3e90cfe9f60a5bef057de6a95442673589e9d63af declared_license: MIT - repo_url: Defame1297/holocron name: git host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.3.5 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.3.6 virtual_path: plugins/git is_virtual: true package_type: marketplace_plugin @@ -144,35 +170,50 @@ dependencies: - .claude/skills/git-branches - .claude/skills/git-branches/README.md - .claude/skills/git-branches/SKILL.md + - .claude/skills/git-branches/references/branch-operations.md + - .claude/skills/git-branches/references/branch-patterns.md + - .claude/skills/git-branches/references/comparing-branches.md + - .claude/skills/git-branches/references/merging.md + - .claude/skills/git-branches/references/orchestrator-contract.md - .claude/skills/git-branches/references/sources.md - .claude/skills/git-commits - .claude/skills/git-commits/README.md - .claude/skills/git-commits/SKILL.md + - .claude/skills/git-commits/references/cherry-pick.md - .claude/skills/git-commits/references/commit-template.md - .claude/skills/git-commits/references/conventional-commits-spec.md + - .claude/skills/git-commits/references/create-commit.md + - .claude/skills/git-commits/references/rewrite-history.md - .claude/skills/git-commits/references/sources.md - .claude/skills/git-history - .claude/skills/git-history/README.md - .claude/skills/git-history/SKILL.md - .claude/skills/git-history/references/README.md + - .claude/skills/git-history/references/bisect.md - .claude/skills/git-history/references/git-log-format.md - .claude/skills/git-history/references/sources.md - .claude/skills/git-remotes - .claude/skills/git-remotes/README.md - .claude/skills/git-remotes/SKILL.md - .claude/skills/git-remotes/references/README.md - - .claude/skills/git-remotes/references/remotes.md + - .claude/skills/git-remotes/references/fetch.md + - .claude/skills/git-remotes/references/pull.md + - .claude/skills/git-remotes/references/push.md + - .claude/skills/git-remotes/references/remote-config.md - .claude/skills/git-remotes/references/sources.md - .claude/skills/git-submodules - .claude/skills/git-submodules/README.md - .claude/skills/git-submodules/SKILL.md - .claude/skills/git-submodules/references/README.md + - .claude/skills/git-submodules/references/removal.md + - .claude/skills/git-submodules/references/setup-and-update.md - .claude/skills/git-submodules/references/sources.md - - .claude/skills/git-submodules/references/submodules.md + - .claude/skills/git-submodules/references/urls-and-config.md - .claude/skills/git-workflow - .claude/skills/git-workflow/README.md - .claude/skills/git-workflow/SKILL.md - .claude/skills/git-workflow/references/README.md + - .claude/skills/git-workflow/references/hard-rules.md - .claude/skills/git-workflow/references/sources.md - .claude/skills/git-worktrees - .claude/skills/git-worktrees/README.md @@ -184,65 +225,90 @@ dependencies: - .claude/skills/pc-author/README.md - .claude/skills/pc-author/SKILL.md - .claude/skills/pc-author/references/README.md + - .claude/skills/pc-author/references/create-config.md - .claude/skills/pc-author/references/hooks-by-language.md + - .claude/skills/pc-author/references/modify-config.md - .claude/skills/pc-author/references/sources.md - .claude/skills/pc-run - .claude/skills/pc-run/README.md - .claude/skills/pc-run/SKILL.md - .claude/skills/pc-run/references/README.md + - .claude/skills/pc-run/references/autoupdate.md + - .claude/skills/pc-run/references/clean.md - .claude/skills/pc-run/references/failure-patterns.md + - .claude/skills/pc-run/references/install.md - .claude/skills/pc-run/references/sources.md deployed_file_hashes: - .claude/agents/git-orchestrate.md: sha256:95a48c8e62cbb5d8f5bb2aa80c253d2f8b3a3988cf6202c10ae4feae1266d64d - .claude/skills/git-branches/README.md: sha256:1d59fc21bcaad298a81e5b1c13cf2a396b13ad59a09eeb63f95165f9216755d3 - .claude/skills/git-branches/SKILL.md: sha256:29d19cee09cd3be3d26db86a228aca9d41833c53945e53e5b26e4339f5c35f0c - .claude/skills/git-branches/references/sources.md: sha256:ee1c982caf67183acc51226bb5078b3409bb6965b720568f10d67e5f976ccb72 - .claude/skills/git-commits/README.md: sha256:c686fd6dd54c608889168cfeaf62e659d66e681194a95aaf5f84859513fda800 - .claude/skills/git-commits/SKILL.md: sha256:99826526958edffc2a897cc9622e3b2cf11c1bd9995c4a338a23758e62aad9de - .claude/skills/git-commits/references/commit-template.md: sha256:456d80208901106270687906c90bc35eb64595800c05b7b9340fe96cc1cf6a57 - .claude/skills/git-commits/references/conventional-commits-spec.md: sha256:b131b5a2edb9a5acd6bdcb72107099a26bbc172b9a5eb845da4daa2176e962f9 - .claude/skills/git-commits/references/sources.md: sha256:7ef0293a96884c8935e3384cfb1c3c2c274d0aa0771ba8ac275e68f568d433f5 - .claude/skills/git-history/README.md: sha256:b285b5b8d771dd2f3482db8b2bd79835ebb6273bffbd8d01bca17d683baac6fa - .claude/skills/git-history/SKILL.md: sha256:d44ca7f6026624da21f9d31f1bb7a03524d83f30f2e83b54b0f72e9dc1524dfc - .claude/skills/git-history/references/README.md: sha256:96ef45f979c692acc9a8f745570d506efe8ed8a57015de02dc699bd77018c463 - .claude/skills/git-history/references/git-log-format.md: sha256:e3a0711d7d2a7053bbd1bcd70832c65dd3348266c0fb330fd80a0b8f7c8f858b - .claude/skills/git-history/references/sources.md: sha256:4a9c9c2ff80193ad4c751ab4baf4c9c42db038a7ea5156733e3253c335912f5b - .claude/skills/git-remotes/README.md: sha256:7f51c47e1671de9f0a63a8836b16caa68727105b62a4240716e457ed8d401f97 - .claude/skills/git-remotes/SKILL.md: sha256:801a81a26117ee38130d9171f9b16c6ae7a281ec3aa3535fee30578eb29c7908 - .claude/skills/git-remotes/references/README.md: sha256:d590a7f2eb078710f44893b4866e821c840f48b7360f0779420d73331a3de597 - .claude/skills/git-remotes/references/remotes.md: sha256:80229bbd6d9e03e85e5ff49018181fb71003187f2c5e019869807e4e94aa4a46 - .claude/skills/git-remotes/references/sources.md: sha256:33e966aba6946cd78d2b9e325670e5292ccdf73d90fcdfca70afb30ee70c1f2d - .claude/skills/git-submodules/README.md: sha256:1510e9691d5107c436bda3497066950bfd2e9c9612cdf8ebd40f5ec73780ddea - .claude/skills/git-submodules/SKILL.md: sha256:3b4525c5e7145d30f4a945bf5f2429cca270f00e88ed85ff79c6d5fa89fa05ca - .claude/skills/git-submodules/references/README.md: sha256:ef5453d5e87fd62568d8c1c55fccfc41f6522316976a8f2cde7aa90c1f857809 - .claude/skills/git-submodules/references/sources.md: sha256:1786dcf90dd21988379a5ee4f243b50a158d87bc059d4903bf54ef268811c5e7 - .claude/skills/git-submodules/references/submodules.md: sha256:ffab8cef061118a83ef480c5e8077c0e1ac2fa7e5e1fae333cfff9bfd362003f - .claude/skills/git-workflow/README.md: sha256:00844e92a521b46273e1c9ee334440c868348c1795ae86eb7fd95fb86dbbfbed - .claude/skills/git-workflow/SKILL.md: sha256:87a3f39fab4db85ce8d2b23d01d1e8b2180bf0a73eb18183eae2d7e28c2cc42b - .claude/skills/git-workflow/references/README.md: sha256:f6aa9351e7d87421f64573a0b1db5b400b0c2c2686097625070e5f1113d72426 - .claude/skills/git-workflow/references/sources.md: sha256:186c6fec31bcefe10bf4409d8ef9b6fdfff6185b431f30c66712d0669df0be55 - .claude/skills/git-worktrees/README.md: sha256:084c936cf0aa2fc808e5fcf8acaec148d93d8ac03a99a6f3d06137adcc14585c - .claude/skills/git-worktrees/SKILL.md: sha256:2ea1122b4f8bc864a85248bde6983a930ad3f91b60286a761cb0de361b25183f - .claude/skills/git-worktrees/references/README.md: sha256:ea2f3249fe0d0af24fa91f4d050f2aead9fc84841333530bce0ddfc7378d56c5 - .claude/skills/git-worktrees/references/sources.md: sha256:5b7fe81f56eb03360a4719f2a988674f43891f7a2bfc14756d68398088767e36 - .claude/skills/git-worktrees/references/worktrees.md: sha256:38999d4d07d85c6142495c3765d56a0b5fdf861487a9347317f6b054a7d3dbc8 - .claude/skills/pc-author/README.md: sha256:2e21bd50002bd2622ebb31793fa4aece14f5233889c3a054fe99f1974f19bb40 - .claude/skills/pc-author/SKILL.md: sha256:577b9bd06615182ce3b0123640d989c3b74ab05bda8103a63a41e1f5a1abb2ec - .claude/skills/pc-author/references/README.md: sha256:c409caf0e08af23f2ec056b649cee0bba22b55c1fbe4b8f1189ce0bbb9b5d5c4 - .claude/skills/pc-author/references/hooks-by-language.md: sha256:2c4ade2ac32e7a9c539d7e08b7d55739e8d87c634860bb58e8764067293bb35d - .claude/skills/pc-author/references/sources.md: sha256:e1cff11955490e4948fec81d8172b0adc5a37829aa0ffe1791c0f6313ed34a4e - .claude/skills/pc-run/README.md: sha256:2e2ebd5220c3251a40afa6c06243ba12fb0aa03dc60fb76db74b22c44914f353 - .claude/skills/pc-run/SKILL.md: sha256:7a0890f7447a04f464ca8a30e5a967ec4421e9ef41298d469f8f2a6ba03be0a2 - .claude/skills/pc-run/references/README.md: sha256:ad42b9013dbd44b8c4515c15317c5e9e6b235bc656ad5a03e037eb4bc6f8782c - .claude/skills/pc-run/references/failure-patterns.md: sha256:59d913c001483c3770d269fdf5e83cf1d7578e0ae879928a1404bf93bb395994 - .claude/skills/pc-run/references/sources.md: sha256:7ca8b7106e7ee5c2c7d1fbd3dc9e0d2a89c18eba79145cbab55bc8e39eef9087 - content_hash: sha256:8c47bd35572c331f1a1b61a8be159d9690a1bf286958a85826fde01939e3007b + .claude/agents/git-orchestrate.md: sha256:8b1b6826bad87b816ea78fc6bdb5aa9c750d542c6266fc3ee3225336450de16f + .claude/skills/git-branches/README.md: sha256:72ff2e422f39c306fa53eb65c73761f48405cdbd42a3eb98d48c304318c9aa3f + .claude/skills/git-branches/SKILL.md: sha256:3a0bcc9a0fce6d0789466a798161743d54d4251b7a4256b87a7cd9d3c0f5b458 + .claude/skills/git-branches/references/branch-operations.md: sha256:c682142f969e943bae3a05cef24ce9661a4b36861da3b115cf07d762ebed4933 + .claude/skills/git-branches/references/branch-patterns.md: sha256:1fdc2cc86634f45d48a3fc4326eec81e1331cef0f8406639f2a712ead2eb5f7b + .claude/skills/git-branches/references/comparing-branches.md: sha256:38f22b0324981a0ad60d29b336e0824b63b1108863fb3e9870f1d93e32f09d82 + .claude/skills/git-branches/references/merging.md: sha256:d144c237e7a8a1e709444af9e16c4d7804ba9f53fcae2326249d98885c48716e + .claude/skills/git-branches/references/orchestrator-contract.md: sha256:d4f5c6517acbe784133c174c076e57348921a3fc5aa12b11bb6cf13b30e087b9 + .claude/skills/git-branches/references/sources.md: sha256:9043d5c90381900dcf7ad6b55b4a73ffee62e3ca6d23f1f89708de635e37534a + .claude/skills/git-commits/README.md: sha256:f4d2b60926e50a45dbf5621dbd62fb1239a4f3da1163402f7e1a82f0a8a8b568 + .claude/skills/git-commits/SKILL.md: sha256:1658a63bc3209993580982c0aa7cbd2656a1d2b3519f2c421c65bf929c65ccfd + .claude/skills/git-commits/references/cherry-pick.md: sha256:1d8a89adbdaa37b4fdf8f2aed6b78e6767df5b46f97f083a0bd71288dfb7e1d9 + .claude/skills/git-commits/references/commit-template.md: sha256:50869213d35b563f2b03d2d3782067842a239d378badab55de3cac5492227f09 + .claude/skills/git-commits/references/conventional-commits-spec.md: sha256:105175ba8244cd52096fde3746b4b671a82ba0337c7894dbc68a7d6a37646bc6 + .claude/skills/git-commits/references/create-commit.md: sha256:ac07f0c608b5388d6780b4ab353fb76974d8672423a2f3b6d80c69e8dbdbab4f + .claude/skills/git-commits/references/rewrite-history.md: sha256:99fb88d022bbae4d1c1b84642d590439fe3142881821a99ed856aaeca43b699c + .claude/skills/git-commits/references/sources.md: sha256:215814371e0a83e7231989cfaf095b6ac9fceda124ad17f0490e7ee615764523 + .claude/skills/git-history/README.md: sha256:6219a74783b28e6005c0a69ad92f9a179c9bda3b911bb1790d15d690d3c5de6e + .claude/skills/git-history/SKILL.md: sha256:dc117941d49c152e3d7e14f6e0595c308ab24378a24ff472a3f4ed98c003eb6f + .claude/skills/git-history/references/README.md: sha256:218187f9372a4027f6189420384dece791af74353adc9ea5b143e37c9ca3df5f + .claude/skills/git-history/references/bisect.md: sha256:75606d95ff592085b4bf35d09361ebbfcb8f3ba195a3f7d89aff187b99789a3b + .claude/skills/git-history/references/git-log-format.md: sha256:b17f36967c32b761a423bb14b900451208daa3be2dc6cba8709a6b60ad9b90fd + .claude/skills/git-history/references/sources.md: sha256:5a0d78e0f3f301dda18e5198dfd5552e90a7250ae14113a8c2d86de68beb3ad8 + .claude/skills/git-remotes/README.md: sha256:945896f6861c77259de0b5318b36c206f54e8b6ba70848d2b65847b64f3b142d + .claude/skills/git-remotes/SKILL.md: sha256:88661a769ebb3d3b2bc64b58f11b2ff1c991ab6bc85e6f59c46e9472fe018598 + .claude/skills/git-remotes/references/README.md: sha256:530122741ff0638ca80500b1b376c284238589ec95d5f33437c840aa197e18b9 + .claude/skills/git-remotes/references/fetch.md: sha256:150c68ef952fafb02f12f1506bfabc5d1fe3b7fc1fcd5df0379943597f808b3a + .claude/skills/git-remotes/references/pull.md: sha256:c06eda4c8090fb07d4b788f8fe2b6efdb0b0ab8c27eaafe8b077745997a22962 + .claude/skills/git-remotes/references/push.md: sha256:880e630792494ce4fab52e7965d548df7bfeaf2a8ba0a4ee775a1299810002b3 + .claude/skills/git-remotes/references/remote-config.md: sha256:779458aefcc932b90567b119b677789c2010e12eb38c5ad52f1be2e822c55019 + .claude/skills/git-remotes/references/sources.md: sha256:ab4bbb3234eca2f2e71700d83d148dba44b741b7f0515ffe051380a43a0f7c84 + .claude/skills/git-submodules/README.md: sha256:8589e78051a811055b382790252f13a00bd0008ebc220cf023efb05d0d12bd77 + .claude/skills/git-submodules/SKILL.md: sha256:ef16cfa16b916423e1d5855587403788b4034166318525adcd5dc1ea23cb0bcf + .claude/skills/git-submodules/references/README.md: sha256:217eeefcb78dc9f48e351e9bed4776c54220564f09888b137c1adbe5d5342971 + .claude/skills/git-submodules/references/removal.md: sha256:604d76043ca8644e9425d46593be3267ba3f54e36cfbd454570ef5a9ac962ea8 + .claude/skills/git-submodules/references/setup-and-update.md: sha256:7f03634a15736deac462cd21335f8bda7d2662f36d91a7127ad6b7105361021e + .claude/skills/git-submodules/references/sources.md: sha256:17187d35af6f6f2dc6515f661f291525cdc7383c731d0547e12521f744c2e604 + .claude/skills/git-submodules/references/urls-and-config.md: sha256:b1269515cf549d52fcf122cc5cdb6fbb56bc4ea974e77d36eef063aa86c7cbec + .claude/skills/git-workflow/README.md: sha256:cc96c23118e821a2e9ab1f6370484ea5cc97f3a0fd285c1b7f3782f0de62117c + .claude/skills/git-workflow/SKILL.md: sha256:06c737da977e4a624a1100fdc502d2e250692cd9f870a7bc3eefac5835c511ef + .claude/skills/git-workflow/references/README.md: sha256:27f978e69d5ffbcdd99c28ff42361da7824e7466b6a34cbf7c4b0feceb16f1ae + .claude/skills/git-workflow/references/hard-rules.md: sha256:7c7a6888527a3925333e0d44129de819d8c5e5161ae1de8551b2f1536d3b2ff2 + .claude/skills/git-workflow/references/sources.md: sha256:e8078edd12bdbe0c81a7796f330ae2a06d78129ff20038c6bf98a8e638860786 + .claude/skills/git-worktrees/README.md: sha256:eeec5c51f9e0353b9cfcfd3b7309ac23d0fb3a1fdacb9006d6d2fc1c0ef099dc + .claude/skills/git-worktrees/SKILL.md: sha256:4758187c798ddb90ebc3e18e76021159aaa857bc3cdd7f8b211a2d6f616db6bd + .claude/skills/git-worktrees/references/README.md: sha256:0778b6c81f7e77c84476fd966195b19f7b1c4553d35f5ffa016f72405c943c29 + .claude/skills/git-worktrees/references/sources.md: sha256:f4264a817836959685bfc286209d997295bb964524ba4e17027c39f25c3bccfd + .claude/skills/git-worktrees/references/worktrees.md: sha256:655fc3e9848e58a4c996efdd2fa1a90f43cec22a455ddb678959f347d2bc4ef0 + .claude/skills/pc-author/README.md: sha256:f363d981e55aa3aafdacb6242ce971c0afbea36c7f2d9ce0dce88dab9c476aeb + .claude/skills/pc-author/SKILL.md: sha256:a7a9a34a5efa4a0ec9f73cd2bc626d08dd0c2130f9ffc219e7bdd230eab717ff + .claude/skills/pc-author/references/README.md: sha256:8fc13224aa64f5931a4f3e06198f67ed621066a69384b95c61ad91d08e86e602 + .claude/skills/pc-author/references/create-config.md: sha256:6f52e367de858739fe87e67c1f7c6fbc21c79650ad14289441d2d13884deaee2 + .claude/skills/pc-author/references/hooks-by-language.md: sha256:9d585293c8801dd41a0f1842e5ac495be4552fc188c564bb074cb9244a189e19 + .claude/skills/pc-author/references/modify-config.md: sha256:7f1c90805e0467e857c67ae20fbb5968136c1e4c703076f2b2cd599990a71216 + .claude/skills/pc-author/references/sources.md: sha256:5546cccd0bf7e725e97de29c96da128a8e39ef1a23102ecd668018c74c30a4cb + .claude/skills/pc-run/README.md: sha256:dab1352741c11f8892720f352d38fdf7e501a416d9219d604476185aa3dc0e69 + .claude/skills/pc-run/SKILL.md: sha256:3f8b75868ff9b8d7b79136c4b02c46cc2719dfb778c1bd2bb8115a2d76e6f95d + .claude/skills/pc-run/references/README.md: sha256:913f47285687f72716b95cb33a2036327fb4335c4d935aa5cfc2bc043b639773 + .claude/skills/pc-run/references/autoupdate.md: sha256:e0c3c53f8dfb2f1cccaaa38e7902f5b7196a128c41cdd7dfc4e95a5da6fecd9a + .claude/skills/pc-run/references/clean.md: sha256:49a66a985c5adfabc876da4e0a2355fa8c22cbcbfbd7548e4b154b094080d87a + .claude/skills/pc-run/references/failure-patterns.md: sha256:c4ebaec91cbbfdb15cce5601b0e86e8556345ec34de9846e0f66c628be06836a + .claude/skills/pc-run/references/install.md: sha256:71ec08d58b8797b09574a827ea06d2c9656e3394d40534860fdaf333f5c19070 + .claude/skills/pc-run/references/sources.md: sha256:f23b3f50045bcff9644019c629451ffc90fe9fabf8dbfd3011c16ef011e48aab + content_hash: sha256:0210ee4fb9b5b2eaf2695a52dc8681d267245a6e89fa547021bb9292c721982a declared_license: MIT - repo_url: Defame1297/holocron name: gitea host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.3.6 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.3.7 virtual_path: plugins/gitea is_virtual: true package_type: marketplace_plugin @@ -257,8 +323,9 @@ dependencies: - .claude/skills/gitea-files - .claude/skills/gitea-files/README.md - .claude/skills/gitea-files/SKILL.md - - .claude/skills/gitea-files/references/examples.md + - .claude/skills/gitea-files/references/reading.md - .claude/skills/gitea-files/references/sources.md + - .claude/skills/gitea-files/references/writing.md - .claude/skills/gitea-issues - .claude/skills/gitea-issues/README.md - .claude/skills/gitea-issues/SKILL.md @@ -289,51 +356,58 @@ dependencies: - .claude/skills/gitea-workflow - .claude/skills/gitea-workflow/README.md - .claude/skills/gitea-workflow/SKILL.md + - .claude/skills/gitea-workflow/references/number-resolution.md + - .claude/skills/gitea-workflow/references/skill-index.md - .claude/skills/gitea-workflow/references/sources.md + - .claude/skills/gitea-workflow/references/status-checkin.md deployed_file_hashes: - .claude/agents/gitea-orchestrate.md: sha256:c281972b9c738e35528f9478ee76dc326d2f113312dacc7fd87991f0cd8cc825 - .claude/skills/gitea-branches/README.md: sha256:ce7bff9d60a3edd4655af9b4f3bb51520ffc2ff2a90f98f55e29a1b72dc5e3ee - .claude/skills/gitea-branches/SKILL.md: sha256:0d8a1ac2e450d60c123ae1538dc8cca49b270da410d2e031cf250cdded2bf839 - .claude/skills/gitea-branches/references/branches.md: sha256:f045fb181d2fc1c948a2e026c335453273931f3a8d710a45b05826547ffe89e2 - .claude/skills/gitea-branches/references/commits.md: sha256:ca70a1c32ff6abf296a027c27c678f1574eddfdc069d7ed4ae621524dcd9adc0 - .claude/skills/gitea-branches/references/sources.md: sha256:1bfad24252356c6005935ccc10a87871709d4b41e6b2d69abe9ac7ab188f4bcd - .claude/skills/gitea-files/README.md: sha256:f9d721b7ed8eae43b5eab04324dbc96fa91964accc77ea74d1b889475592256f - .claude/skills/gitea-files/SKILL.md: sha256:9362d82068257d0aee113fd55f2acf4d53e8d20f638453946b76384a8c49a9b7 - .claude/skills/gitea-files/references/examples.md: sha256:26209f202dd0ec12c73bb62984f9fe42c843e2819dab89752fdf478444a5d79f - .claude/skills/gitea-files/references/sources.md: sha256:71981b2987c56589e469f2305afbf7d404e605c8db1a6d50c1576d50eb9eea9c - .claude/skills/gitea-issues/README.md: sha256:2f5844cf2fde1a62844eb26ac19f915f50fe8fdc5bfde982be018ed2d0e15c30 - .claude/skills/gitea-issues/SKILL.md: sha256:9084c5f37d23ebcc6de5940ad8fcc1c699aa7d4693623bf029a031b21412e7d6 - .claude/skills/gitea-issues/references/enrichments.md: sha256:024872fe787688f7ff51c856264bd3405208543fcbccd113cce464135dbc9f90 - .claude/skills/gitea-issues/references/issues.md: sha256:5c8103944f316f7681ee2b3d5ebbc55dc73a2f5a25616325c87af03b93944a04 - .claude/skills/gitea-issues/references/search.md: sha256:dec2a98a9d781122d235b8a3fa6cd9efdcc08be0a2b71eb29f90a6e14338c0af - .claude/skills/gitea-issues/references/sources.md: sha256:86d5c500e103d5eea31595ab04fb79d9e908215d83d2f0edec1e0e73995d2e96 - .claude/skills/gitea-labels-milestones/README.md: sha256:185dd654d9d775fe0b0464a0dbdf724b06f6375fa6d7c7e200ee826fdcc9b4b5 - .claude/skills/gitea-labels-milestones/SKILL.md: sha256:ce07c4c8827747b13b3d9ea9d20f8318ace0803f2bd42804e717ed9201c54254 - .claude/skills/gitea-labels-milestones/references/label-inference.md: sha256:da141129c74d22a441303b910b68d5bb758435361efbd8d2669f46920d699361 - .claude/skills/gitea-labels-milestones/references/labels.md: sha256:be8ff5ce4dbfb31dd2bdcc425a769dca94887c5c8acd47c78e1e21ccfc24dcba - .claude/skills/gitea-labels-milestones/references/milestones.md: sha256:ff1f1b0c8ecb6967c940d1ca8bebf2a2c7995414936f8ac7f5ff23d1dc01ac3f - .claude/skills/gitea-labels-milestones/references/sources.md: sha256:a1a1d3381dfb0dc8f331be0b3ab49f28e94b992fb4809ca09be91ce33047dd1e - .claude/skills/gitea-prs/README.md: sha256:31b6ad46379feee8ac7d837030f93ec04be20b7d11021b295dc6d27b4340a05b - .claude/skills/gitea-prs/SKILL.md: sha256:bf70832f3d97064c9816d680390da84c256a971d7804317e1814b4ee6a622b4d + .claude/agents/gitea-orchestrate.md: sha256:57075f127535b201cc6e153d5817ab57d5f9c80dc22c7759092ecb0f0028c0c7 + .claude/skills/gitea-branches/README.md: sha256:2f9a0f16351c8b2d6dbb71724d372bb9c267b345b12948ecf840fe4f21faf650 + .claude/skills/gitea-branches/SKILL.md: sha256:1ac80735b5bccf47b7faaba7d077e6c48c9c43970fc9307104b8986efab90934 + .claude/skills/gitea-branches/references/branches.md: sha256:cfc3323175ff56d155b57a65194dfa32459a5a1a4f1b266bb62e05449e39a27b + .claude/skills/gitea-branches/references/commits.md: sha256:7ded733117e3bf8c1a5bba54786197ad72aa9f743d27afafd8c36242ab7b0ce3 + .claude/skills/gitea-branches/references/sources.md: sha256:f206f9ac91146771539cbf288e73d1202d22f05414d9d1806d0dcf5c7ad02152 + .claude/skills/gitea-files/README.md: sha256:2b9bfafdab57af61f3330fdb37070c3d301ee73c6631fde9cb36cdf28e88c466 + .claude/skills/gitea-files/SKILL.md: sha256:808612acc0c28fde06cdecefa1d0d413129c7110059041616bc642ea596068c3 + .claude/skills/gitea-files/references/reading.md: sha256:93a5d8dd909ffdbf2bac09fbe7d819bd8fe26979808c5f5bf8ca5dcce435c752 + .claude/skills/gitea-files/references/sources.md: sha256:4fbd03f275fb72899fc4489737f13074dfb61704965bd2bd52a372deff426fbb + .claude/skills/gitea-files/references/writing.md: sha256:3a5b0b5043fef2c55a0b009a6bf7998a45c3e5770f8b7ac11abd4a1e7b6b351e + .claude/skills/gitea-issues/README.md: sha256:b2781529ea793022765dd4aa96faf5d3dcdaeb088c710b14201a4e73bb1cc580 + .claude/skills/gitea-issues/SKILL.md: sha256:2b776f204579142e27885a9d6f4456076bf2262d785016c46a973afef44797b6 + .claude/skills/gitea-issues/references/enrichments.md: sha256:1daa0758116e818f12f89fa43b031d9cd2518f73de95bc54d94d5536667b68e9 + .claude/skills/gitea-issues/references/issues.md: sha256:7a1c4c42413df84645fbea70b29b2dcd732f52bfee259b2e28506dc101eed9f5 + .claude/skills/gitea-issues/references/search.md: sha256:651a4493b166a498932bd0902d16efde273c49c6fc597bfb0e1b1c0296f7a742 + .claude/skills/gitea-issues/references/sources.md: sha256:d6d358029298537db4d13dea84ee274006bce3e7f99b1aaed963d8703cba2250 + .claude/skills/gitea-labels-milestones/README.md: sha256:4606f16d1639f0a2fe46fcb341a54b673b0bbaeef12c197e2022bdf57b479c37 + .claude/skills/gitea-labels-milestones/SKILL.md: sha256:52aec1a75050b46e3c386eb20454c7a9bddf9bde9a38ab3331a9b06d2e0f5302 + .claude/skills/gitea-labels-milestones/references/label-inference.md: sha256:9aa51cc751f692932b5eecee698eba6eaa3e9f13e423e0fd3b13ffecaf26fc0e + .claude/skills/gitea-labels-milestones/references/labels.md: sha256:365730208ccbdf0f8fe3b2b49c1539208811029e3c343edcbe39b674a46a0527 + .claude/skills/gitea-labels-milestones/references/milestones.md: sha256:0b26f006cfb154d13b2a2fbf356b74f6339e7ab9c34041d50ade676f6c2d17d8 + .claude/skills/gitea-labels-milestones/references/sources.md: sha256:b0a1c8cb678e21cf284e4efa5b75a2414c76a8e3898c449e8b60504d1d465bd5 + .claude/skills/gitea-prs/README.md: sha256:c8c11f5e3cfa7768fe3dfabf935564e5b08d1f7f6629d1dc2149c28b3b8e8ec0 + .claude/skills/gitea-prs/SKILL.md: sha256:ec4b0c38a70cdcaf374ff92a706fcac151dc7b8e358dac36bd202ee3444ea799 .claude/skills/gitea-prs/references/merging.md: sha256:5f8b55b1a729f122ee265fb5da69369fc27434a13dd02fc112801f945d2c9d19 - .claude/skills/gitea-prs/references/pull-requests.md: sha256:d6cefd0cf270f8d844536311e67bfa45cd07f024aa0a649de1938af306ae7109 - .claude/skills/gitea-prs/references/reviews.md: sha256:1089cf45a75a562bbb29de6538848c4f4bd627d5a7e36bf9b2ab6496f45f962b - .claude/skills/gitea-prs/references/sources.md: sha256:ac48a3018443b56acb5c3d55d6c04e62103f5bac71b8185e2bd085fb7e165431 - .claude/skills/gitea-releases/README.md: sha256:102625066c34c7b5a16e25b7506a87f876e9b123b334f5ffba73ab1523a57ed7 - .claude/skills/gitea-releases/SKILL.md: sha256:793a6936c0d56acb4b4aba1d72e1fc91690273df0aafe447e54cb53df00319c1 - .claude/skills/gitea-releases/references/call-signatures.md: sha256:a523dba171d67a7e7899b7d8ecfe9220f250da2c184b0f2806e5d22647b1ffb0 - .claude/skills/gitea-releases/references/conventions.md: sha256:1c8102ed489422706babea4e43e12dc7684b7dacd210fa29b3793bffa9cd9f64 - .claude/skills/gitea-releases/references/sources.md: sha256:37a14495c461120a5bab0013531c9e83e7d9b670e78129a9439a81b48a64cce4 - .claude/skills/gitea-workflow/README.md: sha256:338f79d0b3c25741848fce841a5094ef27cbc7e4a6228404557b2d9594df68fa - .claude/skills/gitea-workflow/SKILL.md: sha256:a8266ceb335c56eb68cc09b3f81690c52c4dada9f25b48c3a46ac46b0ad3b761 - .claude/skills/gitea-workflow/references/sources.md: sha256:171d3a5a36cb9d637302516501a1e9fc7a4bd058968dc9244412c335aa2de68b - content_hash: sha256:16d5b4462c3f4a506c1c74172d4d67bf0dacc4218676de4e8dfe551b2f31a3f8 + .claude/skills/gitea-prs/references/pull-requests.md: sha256:6f4b9de079ebe248282243a2920016bfb172d4115ad712feb1757bb57d5eec3e + .claude/skills/gitea-prs/references/reviews.md: sha256:97cef439e20595ab90cfa0105cff3ef39a53989172a9c0603374d16498f426b5 + .claude/skills/gitea-prs/references/sources.md: sha256:e2c2792013550f99281f517310bd76d2e5d56751ace6da117ce602048d5342c5 + .claude/skills/gitea-releases/README.md: sha256:e5d2dd0748990c1d99f2065c97c275bb14eb4fb447c94e76c332bc5952fadb99 + .claude/skills/gitea-releases/SKILL.md: sha256:f3b9e867abf0fe3be88dc34242b18d96bd0f361252d7472ecacdd310689d36e0 + .claude/skills/gitea-releases/references/call-signatures.md: sha256:1f7b40c390a5d032f8a00609194d8ce2107ac06d420b56d316837a6ec7dda982 + .claude/skills/gitea-releases/references/conventions.md: sha256:2a5613796701d0e27eaec1f71a1dc12f5fd5c2861ea001689d057da8c830cfba + .claude/skills/gitea-releases/references/sources.md: sha256:30c43a93f4d7ea05ef3d013a68f8656317ef6cef6773ce9944d35b24a93bdc80 + .claude/skills/gitea-workflow/README.md: sha256:508d49159db9b70bc4e1c8f0a440ec4c88b9941b4a83a60e1c2e9e286c0d0621 + .claude/skills/gitea-workflow/SKILL.md: sha256:93b64305f9232feae4c39aff33ebf8ca0ea9599b24cab0d838553868dd9a699e + .claude/skills/gitea-workflow/references/number-resolution.md: sha256:0242430246fd572e4e0c3715d557e425cd7d3260bba76f56856255b340184c3f + .claude/skills/gitea-workflow/references/skill-index.md: sha256:b53d8148ea8cf6e4cabd15cab39f60b98167d930f590ca0fdcb5f2f3969edc5e + .claude/skills/gitea-workflow/references/sources.md: sha256:21305440e8060adbdf5af2b946d2e173ad35f8326dd9e24cd1f769fefde92f7f + .claude/skills/gitea-workflow/references/status-checkin.md: sha256:c6da98ecbe1d2919222bfb856cf10c3fb9971423e1eb6590a15f6fc7550f102d + content_hash: sha256:f306f493e32600c8d1bc2884125e1e455cdc5d4322300f5c3a17c855f81e001f declared_license: MIT - repo_url: Defame1297/holocron name: kyberforge host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.6.0 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.6.1 virtual_path: plugins/kyberforge is_virtual: true package_type: marketplace_plugin @@ -354,6 +428,7 @@ dependencies: - .claude/skills/agent-audit/references/body-and-delegation.md - .claude/skills/agent-audit/references/description-quality.md - .claude/skills/agent-audit/references/field-inventory.md + - .claude/skills/agent-audit/references/finding-criteria.md - .claude/skills/agent-audit/references/scope-plugin-apm.md - .claude/skills/agent-audit/references/scope-project-user.md - .claude/skills/agent-audit/references/sources.md @@ -396,7 +471,10 @@ dependencies: - .claude/skills/forge - .claude/skills/forge/README.md - .claude/skills/forge/SKILL.md + - .claude/skills/forge/references/apm-routes.md + - .claude/skills/forge/references/author-routes.md - .claude/skills/forge/references/sources.md + - .claude/skills/forge/references/version-bump.md - .claude/skills/skill-audit - .claude/skills/skill-audit/README.md - .claude/skills/skill-audit/SKILL.md @@ -409,6 +487,7 @@ dependencies: - .claude/skills/skill-audit/references/body-discipline.md - .claude/skills/skill-audit/references/description-quality.md - .claude/skills/skill-audit/references/file-structure.md + - .claude/skills/skill-audit/references/finding-criteria.md - .claude/skills/skill-audit/references/formatting-and-scripts.md - .claude/skills/skill-audit/references/patterns.md - .claude/skills/skill-audit/references/sources.md @@ -435,10 +514,10 @@ dependencies: - .claude/skills/skill-author/references/sources.md - .claude/skills/skill-author/scripts/new-skill.sh deployed_file_hashes: - .claude/agents/apm-orchestrate.md: sha256:fbb78f7c8c58b018639e7a39f2f1b3ce2adcd6bed277b3c8f8cd70893698ec73 + .claude/agents/apm-orchestrate.md: sha256:7c4b7efb58ecdd26fea835613d0f7f909706607cac4f002a0df2db2a3a0ee477 .claude/hooks/kyberforge/.apm/hooks/check-apm-current.sh: sha256:96f44d63b5f4906ac1add5c32b718176ec10c8514615151d7303d9845c607b46 - .claude/skills/agent-audit/README.md: sha256:fafdb84bf258f6d606c97b785c7c378b5de805f0aa8a10d3cedefedb000e4230 - .claude/skills/agent-audit/SKILL.md: sha256:a126a2a7b1b8c9f6b39272584e2f84577aeeb8c81707be6f151b3acbe35ecf51 + .claude/skills/agent-audit/README.md: sha256:c2f1fca5e0c8c713904d82888691efa605670dc08a03aed5c8233a7f26cf7d53 + .claude/skills/agent-audit/SKILL.md: sha256:1fa16e4cb540283d2da0d17585df821963a72dc0a0235f134205c54805d95f03 .claude/skills/agent-audit/assets/vale/.vale.ini: sha256:d643677585c603edcc8816b15d9c85c81b677ded02247b521ba8b88ae5bfdf57 .claude/skills/agent-audit/assets/vale/styles/Kyberforge/CompositionNote.yml: sha256:e0a52fb9ff65aee9d21d1f7b61bef0f71d14b8edd9af1d70246715bbb8844ccf .claude/skills/agent-audit/assets/vale/styles/Kyberforge/DescriptionOpener.yml: sha256:60984e0af965137a151a07875f388c94ea2da93d4ee4f2b92811bd14105527f2 @@ -446,18 +525,19 @@ dependencies: .claude/skills/agent-audit/assets/vale/styles/Kyberforge/SentenceOpenerThereIs.yml: sha256:5dade0238d96730d24bb6e8dba003c3d94694bd9969687f461fe1fada3ca4629 .claude/skills/agent-audit/assets/vale/styles/Kyberforge/VagueWording.yml: sha256:d4bf14d0bb2dcbe3a89b66b72a9c9c19d175060b5c4c978da3d67010f1a25083 .claude/skills/agent-audit/assets/vale/styles/KyberforgeCopilot/ProactivePhrase.yml: sha256:ba4f91479f66f9f03c74f791cbc6130b24bbc31a25f3897b424f72d02473b9b4 - .claude/skills/agent-audit/references/README.md: sha256:f6d777f7d3844d1be847f86f67b08c2db37b2d122e0bf1af92ef057bbfdd1004 - .claude/skills/agent-audit/references/body-and-delegation.md: sha256:788664bb75364354773bd9efd4a0f84a231009d3a8b080e2561fefff2aa95b69 - .claude/skills/agent-audit/references/description-quality.md: sha256:15eea332149203ac18c6b3eee98f0078e8a764cdb91b3158590f45204cb3322a - .claude/skills/agent-audit/references/field-inventory.md: sha256:e9abd738c08890994441d215eba96f894e00992cb7bb5ce850796186050aa1ae + .claude/skills/agent-audit/references/README.md: sha256:9d2acf43aa4e8b2b71c99224d1ea8c7c2ff4d27d7c6982175bf1a52ceffd7be8 + .claude/skills/agent-audit/references/body-and-delegation.md: sha256:e559a185e3de779ce599ba6ccbad316df43f158a9f002bbc88828eeba748066a + .claude/skills/agent-audit/references/description-quality.md: sha256:89572997ca01df1c526759fe5d324c3ebbbee314172849d82caef16c4992a4d3 + .claude/skills/agent-audit/references/field-inventory.md: sha256:24feb0d25dd85c4fbd4558fbca78bd66974a8fc5be2d5c952c7a8ed7168f7d65 + .claude/skills/agent-audit/references/finding-criteria.md: sha256:c18934428215154daf5543f4e8e40ca55c9833125e8b29feca513f99376c5663 .claude/skills/agent-audit/references/scope-plugin-apm.md: sha256:af32acf33aec0cd0a98022ee6796265066c693662e8874a8e4d7e03ce1657c88 .claude/skills/agent-audit/references/scope-project-user.md: sha256:9ea0d4014d78a6b02c760e42fb6cb72b3441ae6c93991fdeca666857bad05056 - .claude/skills/agent-audit/references/sources.md: sha256:235de49e805d83ba19f8ecdc90da2f7d3b02c5f1c2fc54179d6bdd5bc398743e - .claude/skills/agent-audit/references/validation-scripts.md: sha256:7eb48ec40175d6cce2b3b9602c0d9e60d62bacca1df7cc120c138ea1ce328666 + .claude/skills/agent-audit/references/sources.md: sha256:86f93524eae02c06be01e9feb3b751805b4f6a7da824e242693d588496c9e490 + .claude/skills/agent-audit/references/validation-scripts.md: sha256:99c6d23a1d45184f1b2265dae31f66392defa094522d1f199187d172cbf306ea .claude/skills/agent-audit/scripts/README.md: sha256:ee427eed6a562a6e86898c69c35508c518d5b3c633ae803e587fbab37514f2b2 .claude/skills/agent-audit/scripts/vale-wrap.sh: sha256:c17673b3b0de1c1a49fcb73e2b695835a45014ec1c300a77a3ba7b3c7ce4c995 - .claude/skills/agent-audit/scripts/validate-provenance.sh: sha256:0e1d2b3bb1abb9f302ed84a618246ebaa7d5f7fda727b290d323e70dcc26a323 - .claude/skills/agent-audit/scripts/validate.sh: sha256:50c6d3875fd44901fba3fcb69256f616be19521ee8209b7132778c1d4a693a3f + .claude/skills/agent-audit/scripts/validate-provenance.sh: sha256:197a9bef1a58fa2457a4ae0b802c7b362911e26cec0a5f0194840c95500057a4 + .claude/skills/agent-audit/scripts/validate.sh: sha256:aa21b99ebc6bcd845066113d74e39d86c8c2858067edfe855d03cbf42531150b .claude/skills/agent-author/README.md: sha256:b2d14a3c8fc3ddc3935d0bd1765192b333b944baaf9bfa9a350bef0985890265 .claude/skills/agent-author/SKILL.md: sha256:8fe96e4744378cd33876cf87a08a20af001898e89f0f27087044e1b87eac61f2 .claude/skills/agent-author/assets/README.md: sha256:730b2321b5f16dcc63fc5dc842618c116afc75217ae925057dafc490e7d57644 @@ -465,7 +545,7 @@ dependencies: .claude/skills/agent-author/assets/templates/claude-code.md: sha256:ea0bac6e8cd91c767c6114cbcf1ecd124d03abff06ba81696dac5115499c395a .claude/skills/agent-author/assets/templates/copilot.agent.md.template: sha256:ee8b7585c808c5ff4b715be74d9e4f8c5c17d13cd603a8727cd8ca1793d14760 .claude/skills/agent-author/references/README.md: sha256:aca156b02a3f0b9fddde3cefdb24370e17cc5886dcd78adcb382699a5cc0bbaf - .claude/skills/agent-author/references/contract.md: sha256:a96f0ef021a6629120e5af7c98fa483d31de92cea37f98b51528a28dee38e16a + .claude/skills/agent-author/references/contract.md: sha256:d862636a23c6d64026982727588db1582499b72c774ca429578a57321fa89e19 .claude/skills/agent-author/references/create.md: sha256:e4a1b95970ec44d551a4b0598f2fe01463db13a6b118981d8cd03dfc7e24f451 .claude/skills/agent-author/references/deployment-modes.md: sha256:5675f8dcd1523269d5c65be5b0e06ff4d822b158050e2fdd72b54f605485ab1f .claude/skills/agent-author/references/improve.md: sha256:f260e91f28bbd62093b53f4efc05821eff00d086f834ddb083b70dd77ddffcaa @@ -475,38 +555,42 @@ dependencies: .claude/skills/agent-author/references/sources.md: sha256:cac8baf85a6d958ed2f0f882446dc123d14082d5ca412c8edee12c6cd1b6fdc3 .claude/skills/agent-author/scripts/README.md: sha256:e8ea2f3391ca297afeda03911768000617a71df0cf9d673bbb260ee5bbfed7c2 .claude/skills/agent-author/scripts/new-agent.sh: sha256:1c631f5178c6c0c397d7ceefb606892dd7e330cd1b22a03c1e4d11e85fbdb7de - .claude/skills/apm-install/README.md: sha256:d7bd79ee27997fffb5765c03358a700d8c00266ea120f6d067d74300d6c26eb0 - .claude/skills/apm-install/SKILL.md: sha256:4c0db5454bcbf895a89e7405eeefb4521a2b23f2ff28aa96c82c59708d8819ee + .claude/skills/apm-install/README.md: sha256:f48ca12116d20584fd4582d3ba44a9f02cddab2ae2f12c41abfc3455b4640203 + .claude/skills/apm-install/SKILL.md: sha256:ee0877665f2fd9ff4e764b7957ebb9b6f6006ffabc254cba8c2ecfeaf9848278 .claude/skills/apm-install/references/sources.md: sha256:b80245ff8ae179d458572cb9b03621d00bf7e2f052f0cd71b88112c0ea8a91ce - .claude/skills/apm-workflow/README.md: sha256:40e85d2c2a7487b54c7797fb135b979b8df14b524928da8c7502723a0fc8d36a - .claude/skills/apm-workflow/SKILL.md: sha256:60c2c3351b74cc8b3cb468e1cb353815214e7913ab118c30c9172f4c7f264844 - .claude/skills/apm-workflow/references/audit.md: sha256:a336da288330a9f9d09b79fabeefbfc70f7ca81e9d86ef335c70a4eba3186141 - .claude/skills/apm-workflow/references/compile.md: sha256:f0b7b99e56937290ed6c1db52e542283670e369a2cc55f8a3c5dbc48d4252f7a - .claude/skills/apm-workflow/references/configure.md: sha256:c92d7c23c6bcb4ce0b56cce43fe399c085d698fcf58243f416bc84f0e058d7a0 - .claude/skills/apm-workflow/references/install.md: sha256:1615e31460f8cc820fca162175b8689ade1324604aa1c8f204cbc8924d74b5ee - .claude/skills/apm-workflow/references/marketplace.md: sha256:0f2fdd21d8080f3b34ddee8abd52431903aeb67878842de99198a868dc43ef67 + .claude/skills/apm-workflow/README.md: sha256:b9e422212c93b188ad0992e2cacb3ef475467b1e1c33981cf26946ce6f11de5a + .claude/skills/apm-workflow/SKILL.md: sha256:ac5738fc899ae259977df7b6c20695f18f1b1929e65909fce5311639f0a307d4 + .claude/skills/apm-workflow/references/audit.md: sha256:9b3fe128cbe133c8f2880a968b4cd6e875cc0eb79ef6738a9bfdabdf28446fe2 + .claude/skills/apm-workflow/references/compile.md: sha256:26bbdffce73dce9b1b5589b24aec521c7a4d842c94e5a555031144afda4ce437 + .claude/skills/apm-workflow/references/configure.md: sha256:0b053dad39543679c72d8267667b49c9823f6bfeca781f0caf4e26d7380be1fe + .claude/skills/apm-workflow/references/install.md: sha256:e729386bee5e2b67ce16b4c6c85446ce7b47d3122b68c148a571bd00a8550ad5 + .claude/skills/apm-workflow/references/marketplace.md: sha256:d170ae4853d6f0f369667044e6e124ba8bc3d9235a268240ac45d58973481dfc .claude/skills/apm-workflow/references/sources.md: sha256:4ae44a9e82e8ec3bd4b1a61f32adbd3f3ff5fab21db3b4162765b2c0553e49fd - .claude/skills/forge/README.md: sha256:2151b952f4438cd9212edd97de90eec06f027f01121b3badb9d32dc9c45320c4 - .claude/skills/forge/SKILL.md: sha256:4de4c629cb4aec4c6cac5347163a86fe123299f131510dc43857597ded6ae497 - .claude/skills/forge/references/sources.md: sha256:a7f614c0ab37aa403545e191722bca012836162dcab30ff8ac984cbb25ad68cd - .claude/skills/skill-audit/README.md: sha256:78bfcfb16bbeef814b83f37a4a5185886003f9442a6d0e7e94be56f54d18d7a5 - .claude/skills/skill-audit/SKILL.md: sha256:57a9336d409c883dc9a78aa92a9f0075fac6f8e4aac6ee8fdab705055ef85162 + .claude/skills/forge/README.md: sha256:e7bc187af3072cb554ffeac5a90e24e87b3e086ba7c8fc104b7b542237070dcc + .claude/skills/forge/SKILL.md: sha256:a87b5c375c42142eedc2452b2b9b48033a18fb649e94a458f22cfbd4b0accfe4 + .claude/skills/forge/references/apm-routes.md: sha256:b7d74d12ff34648be968db3e9db66c1be2efa420cad0eceea20374aa100659aa + .claude/skills/forge/references/author-routes.md: sha256:3f60ba054d4823adeccd8a83ad06b39860bd599df94056aa94c3d9e4293e0c1f + .claude/skills/forge/references/sources.md: sha256:08f5c6857fef904e48cc9e8cf159673c2f70c6d27e851175b8ce929b1de08243 + .claude/skills/forge/references/version-bump.md: sha256:8046a8a2a2b019800101cc215e8ee87bdcf42cd6240ea1b484537a06baf27bef + .claude/skills/skill-audit/README.md: sha256:fe6002082a5da01579dd2693a3c4cc2ab557d5c63110c818b312fbccb98d0534 + .claude/skills/skill-audit/SKILL.md: sha256:492d0895374b31f6b65068fd388f0161b47ddffdafc99a571cec4ae1faa0f798 .claude/skills/skill-audit/assets/vale/.vale.ini: sha256:0d1108b17a941b514dd9a62a7382d1febdd543118750246c81fba406440a9f9f .claude/skills/skill-audit/assets/vale/styles/Kyberforge/CompositionNote.yml: sha256:e0a52fb9ff65aee9d21d1f7b61bef0f71d14b8edd9af1d70246715bbb8844ccf .claude/skills/skill-audit/assets/vale/styles/Kyberforge/DescriptionOpener.yml: sha256:60984e0af965137a151a07875f388c94ea2da93d4ee4f2b92811bd14105527f2 .claude/skills/skill-audit/assets/vale/styles/Kyberforge/PaddingPhrase.yml: sha256:67b738f5c393a717bdf249fcd946eb7b0d258215bf2240d2be6902711b46d8e9 .claude/skills/skill-audit/assets/vale/styles/Kyberforge/SentenceOpenerThereIs.yml: sha256:5dade0238d96730d24bb6e8dba003c3d94694bd9969687f461fe1fada3ca4629 .claude/skills/skill-audit/assets/vale/styles/Kyberforge/VagueWording.yml: sha256:d4bf14d0bb2dcbe3a89b66b72a9c9c19d175060b5c4c978da3d67010f1a25083 - .claude/skills/skill-audit/references/body-discipline.md: sha256:f8a27d7266f4453781712f0bead151580158581a445a641613203a67a1c337d7 - .claude/skills/skill-audit/references/description-quality.md: sha256:2d37eccb4889cade6cbad0deaaed6d1f5fe4c3276c5438c244b2f87ae27bf432 - .claude/skills/skill-audit/references/file-structure.md: sha256:b24638bd639ef048da171f6dc711e345749cde3c70ec6ba1b7fcbd696b921841 - .claude/skills/skill-audit/references/formatting-and-scripts.md: sha256:5c319866b2f22ba07789dae7b0813132f67196c508e8da23971307c2a9e57095 - .claude/skills/skill-audit/references/patterns.md: sha256:4a942ab30b95dc0cbf0fbe7da3b91157f166bce80cbd17bcf60dc365ea9237af - .claude/skills/skill-audit/references/sources.md: sha256:1db16ea23884ac2db799b42d1284daaab4b24eb94f184a95fb67ddc280385934 - .claude/skills/skill-audit/references/validation-scripts.md: sha256:44f3b82413b57f2b5671637bb449a4c01b6d5fcd9059245aaa38e45108adf480 + .claude/skills/skill-audit/references/body-discipline.md: sha256:0029e78e0024c50e8e9d3a57f4ae38c34775468193635fdf37bf806b6228c813 + .claude/skills/skill-audit/references/description-quality.md: sha256:bddde053e051cc3e66db46dfbf2f8b422618ecf2f918e3ad5deb2d9dc2433e03 + .claude/skills/skill-audit/references/file-structure.md: sha256:3b9d9281eab8dfbbcd403d1a2f253e768d13b258ace4d109d263639f26deff06 + .claude/skills/skill-audit/references/finding-criteria.md: sha256:1e613db280a183f8d44e1bcd76c49b910d14695b27157887f876726efd8824f1 + .claude/skills/skill-audit/references/formatting-and-scripts.md: sha256:34a9b3e66b0f1852634a286891c0a9c00cb17bc49ddaa0b039c86f48f12bc282 + .claude/skills/skill-audit/references/patterns.md: sha256:411c0e9f00731c9c5258bb3fcebc74c1208ad8b51740e2fe41810cf72f7951fd + .claude/skills/skill-audit/references/sources.md: sha256:d3bd14466fede4b62f6ac3d2b40712befcb028ed005c192beddeea31da752d8a + .claude/skills/skill-audit/references/validation-scripts.md: sha256:e1436269c2e5f8ed15abd65bcbed0619c5b84618f327ec90a28634980376dcef .claude/skills/skill-audit/scripts/vale-wrap.sh: sha256:c17673b3b0de1c1a49fcb73e2b695835a45014ec1c300a77a3ba7b3c7ce4c995 - .claude/skills/skill-audit/scripts/validate-provenance.sh: sha256:015376c5ad1f6bb6b53549537317a55e3ac06cd4e347451dba85879a3928ccbe - .claude/skills/skill-audit/scripts/validate.sh: sha256:7ce27df82e4160c6296db6c8314865f022da5c4334151857570a86167c8d4e11 + .claude/skills/skill-audit/scripts/validate-provenance.sh: sha256:47bd47b710652358ebc687adf370516f1aa25b228d2dace9b49e5bc725eb6f2b + .claude/skills/skill-audit/scripts/validate.sh: sha256:1eaae273885f6a68b29086eca60ca72adb83a33d3391037b9461105d7fe9bf01 .claude/skills/skill-author/README.md: sha256:d22035d302818e103486e447bd92d2da4c9b73da60f30157941710f32f400b89 .claude/skills/skill-author/SKILL.md: sha256:615a936580f44dd8e523496aadf88df6d512ac58369190b90407e8fca86e8345 .claude/skills/skill-author/assets/templates/README.md: sha256:f7e91356f4c85862f96a9f46a7a7ae8b5dc715c8174add5cf070166a8bae0658 @@ -516,22 +600,22 @@ dependencies: .claude/skills/skill-author/assets/templates/references/sources.md: sha256:fe126720ba890b98e829f2626e3f5a361a0c2ce47eda97bd3f7dc1812ddd62b7 .claude/skills/skill-author/assets/templates/scripts/README.md: sha256:ee427eed6a562a6e86898c69c35508c518d5b3c633ae803e587fbab37514f2b2 .claude/skills/skill-author/assets/templates/tests/README.md: sha256:5d331de121105ca79b544b9d3779a316a64cee46fa8d51ba0ea789ab5c233442 - .claude/skills/skill-author/references/contract.md: sha256:d350721118a2bd57094fa9151f11b48a663a1c8a04e50fba71ff2baf64b7282f + .claude/skills/skill-author/references/contract.md: sha256:8b4b1f4f05d5ee5398a332cc2ee48d59f0a09105dd84049f59ca040bda6f65dc .claude/skills/skill-author/references/create.md: sha256:0837a77ad6da7ae9894134d15eebd57950b8505e8bd2b32ee69f281d65a6abcb .claude/skills/skill-author/references/deployment-modes.md: sha256:ffe2d928f2b5ec90c509f4d4cc5bd33c71899852cb5cc5a31fe1513b707fb759 .claude/skills/skill-author/references/improve.md: sha256:abe029587ce475fed165d8fcfa46ea1abe83f90727d093f8121a9a7a7daa5a3d - .claude/skills/skill-author/references/retrofit.md: sha256:6c8336caa717f2abd38cb1f9c776479c0e908f7dbf577021d3689b375287dc77 + .claude/skills/skill-author/references/retrofit.md: sha256:414cf356bc7a23bc7af1f2b918159458bd59f3a35f48f00762718baa9f935918 .claude/skills/skill-author/references/scripts.md: sha256:fe71da1fb3d947846ad1a37348f90866b0c4f7dbd81331cfe3300981656f6cc2 .claude/skills/skill-author/references/sources.md: sha256:652f7ce26c0d68a3ed11db09206bff20ba230ca8ff1fe71ae45b6f4505979327 .claude/skills/skill-author/scripts/new-skill.sh: sha256:c788b56f73ed4fd03edb179159361fe16e3afbf528a9895e9251909c5aa40a7f - content_hash: sha256:32185a11d3d859e5235de2c43065920ba8950c1684e6aec46f0f7170ff4a111e + content_hash: sha256:b04348085f13973504abd5107afa95bc45e7249ec523a5ee135bd9f62c6c4d1a declared_license: MIT exec_status: deployed - repo_url: Defame1297/holocron name: lint host: git.dev.rkdr.net - resolved_commit: 0e91a3ae66d1b0439b9c0ef4b6e88ca6f2659473 - version: 1.1.6 + resolved_commit: 598a7c326a4bbfa4a39007eb95d944c4150686e8 + version: 1.1.7 virtual_path: plugins/lint is_virtual: true package_type: marketplace_plugin @@ -549,15 +633,15 @@ dependencies: - .claude/skills/vale-run/references/troubleshooting.md deployed_file_hashes: .claude/agents/lint-runner.md: sha256:efeee4fb01c27b9177239f059851cf1b736ca50a12793b94d5d65d30ab98bcd4 - .claude/skills/vale-config/README.md: sha256:faf6bca23cea74be7ecf47a31b0499af2f6ce791bbc82eb67069e1e67eeed07c - .claude/skills/vale-config/SKILL.md: sha256:1674f1256b654779268c42f764fa0c4f09011ce8ea62eb0e01fd8f118495519b - .claude/skills/vale-config/references/configuration-reference.md: sha256:1c2dbee6315178b00e624c002a6ae8d9d20f03f2c7ff1c3fba4eebe38fb39a7f - .claude/skills/vale-config/references/sources.md: sha256:2efa451c3cc6bdc1103cfe56712a3ea35acef9a76fe4c6f71e8cacabd92dc860 - .claude/skills/vale-run/README.md: sha256:1a850c89cf7de288dc72b96cae6fec24a3ccdc237f0ce785f59cca56c7762198 - .claude/skills/vale-run/SKILL.md: sha256:16c42c97de14ef20296b9dfce46b0e2f9be6ad68751c35975251cecff80f79d9 - .claude/skills/vale-run/references/sources.md: sha256:1f46b727e5f3db09d6c8c01c8a615bad60ce2c5b3a01226e1a3fd3b933330bc7 - .claude/skills/vale-run/references/troubleshooting.md: sha256:b4c2bc67b413b102d9fe1cd7e5a248b19aba3dc3b60b4429e777977cf8021cd5 - content_hash: sha256:f7915119bf5d349bb4dd26b7999278770dd2e0b38e4b4db57c0819a15cbf97a3 + .claude/skills/vale-config/README.md: sha256:d4326ddeab98d7fe24bcc7116ca059e4da8f6bc15981fef856803e3a0fef398d + .claude/skills/vale-config/SKILL.md: sha256:2e2500f871b39b9168e45b8e8fb731c964637202b59368c193c20d96da8cd84b + .claude/skills/vale-config/references/configuration-reference.md: sha256:1c4e22183d55809e79add7e3af353f5caaef903133b9c3f5088cc37f5230e47b + .claude/skills/vale-config/references/sources.md: sha256:71c73879827bdcd86019bb1faba20bb4bf02ccf610e939412110079efcd9a8ab + .claude/skills/vale-run/README.md: sha256:f25930095a9f9bba09ba3ff53b53606a40b2e5fddeb63cf071ed18c0b4076dcb + .claude/skills/vale-run/SKILL.md: sha256:d5b5e87e51f145e3c4b9e91d23070bbb938ba19b07af30e92400f353ad7fd50a + .claude/skills/vale-run/references/sources.md: sha256:c902480e6ba35926c58b2ce9233434340a5e4ec4f09cd112135c3f58f91b98c5 + .claude/skills/vale-run/references/troubleshooting.md: sha256:3609993547c96c43b3b0f313e9f3c0611214cf14aad8420c2a168dc26c055115 + content_hash: sha256:a0e760b6efb4214a677c3b0f74d3167c3b6a7dcf4146a480986cd3ff7a76bb05 declared_license: MIT deployments: - kind: project-relative @@ -568,7 +652,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:fbb78f7c8c58b018639e7a39f2f1b3ce2adcd6bed277b3c8f8cd70893698ec73 + content_hash: sha256:7c4b7efb58ecdd26fea835613d0f7f909706607cac4f002a0df2db2a3a0ee477 - kind: project-relative target: claude value: .claude/agents/git-orchestrate.md @@ -577,7 +661,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:95a48c8e62cbb5d8f5bb2aa80c253d2f8b3a3988cf6202c10ae4feae1266d64d + content_hash: sha256:8b1b6826bad87b816ea78fc6bdb5aa9c750d542c6266fc3ee3225336450de16f - kind: project-relative target: claude value: .claude/agents/gitea-orchestrate.md @@ -586,7 +670,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:c281972b9c738e35528f9478ee76dc326d2f113312dacc7fd87991f0cd8cc825 + content_hash: sha256:57075f127535b201cc6e153d5817ab57d5f9c80dc22c7759092ecb0f0028c0c7 - kind: project-relative target: claude value: .claude/agents/lint-runner.md @@ -622,7 +706,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:fafdb84bf258f6d606c97b785c7c378b5de805f0aa8a10d3cedefedb000e4230 + content_hash: sha256:c2f1fca5e0c8c713904d82888691efa605670dc08a03aed5c8233a7f26cf7d53 - kind: project-relative target: claude value: .claude/skills/agent-audit/SKILL.md @@ -631,7 +715,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:a126a2a7b1b8c9f6b39272584e2f84577aeeb8c81707be6f151b3acbe35ecf51 + content_hash: sha256:1fa16e4cb540283d2da0d17585df821963a72dc0a0235f134205c54805d95f03 - kind: project-relative target: claude value: .claude/skills/agent-audit/assets/vale/.vale.ini @@ -703,7 +787,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:f6d777f7d3844d1be847f86f67b08c2db37b2d122e0bf1af92ef057bbfdd1004 + content_hash: sha256:9d2acf43aa4e8b2b71c99224d1ea8c7c2ff4d27d7c6982175bf1a52ceffd7be8 - kind: project-relative target: claude value: .claude/skills/agent-audit/references/body-and-delegation.md @@ -712,7 +796,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:788664bb75364354773bd9efd4a0f84a231009d3a8b080e2561fefff2aa95b69 + content_hash: sha256:e559a185e3de779ce599ba6ccbad316df43f158a9f002bbc88828eeba748066a - kind: project-relative target: claude value: .claude/skills/agent-audit/references/description-quality.md @@ -721,7 +805,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:15eea332149203ac18c6b3eee98f0078e8a764cdb91b3158590f45204cb3322a + content_hash: sha256:89572997ca01df1c526759fe5d324c3ebbbee314172849d82caef16c4992a4d3 - kind: project-relative target: claude value: .claude/skills/agent-audit/references/field-inventory.md @@ -730,7 +814,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:e9abd738c08890994441d215eba96f894e00992cb7bb5ce850796186050aa1ae + content_hash: sha256:24feb0d25dd85c4fbd4558fbca78bd66974a8fc5be2d5c952c7a8ed7168f7d65 +- kind: project-relative + target: claude + value: .claude/skills/agent-audit/references/finding-criteria.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + content_hash: sha256:c18934428215154daf5543f4e8e40ca55c9833125e8b29feca513f99376c5663 - kind: project-relative target: claude value: .claude/skills/agent-audit/references/scope-plugin-apm.md @@ -757,7 +850,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:235de49e805d83ba19f8ecdc90da2f7d3b02c5f1c2fc54179d6bdd5bc398743e + content_hash: sha256:86f93524eae02c06be01e9feb3b751805b4f6a7da824e242693d588496c9e490 - kind: project-relative target: claude value: .claude/skills/agent-audit/references/validation-scripts.md @@ -766,7 +859,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:7eb48ec40175d6cce2b3b9602c0d9e60d62bacca1df7cc120c138ea1ce328666 + content_hash: sha256:99c6d23a1d45184f1b2265dae31f66392defa094522d1f199187d172cbf306ea - kind: project-relative target: claude value: .claude/skills/agent-audit/scripts/README.md @@ -793,7 +886,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:0e1d2b3bb1abb9f302ed84a618246ebaa7d5f7fda727b290d323e70dcc26a323 + content_hash: sha256:197a9bef1a58fa2457a4ae0b802c7b362911e26cec0a5f0194840c95500057a4 - kind: project-relative target: claude value: .claude/skills/agent-audit/scripts/validate.sh @@ -802,7 +895,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:50c6d3875fd44901fba3fcb69256f616be19521ee8209b7132778c1d4a693a3f + content_hash: sha256:aa21b99ebc6bcd845066113d74e39d86c8c2858067edfe855d03cbf42531150b - kind: project-relative target: claude value: .claude/skills/agent-author @@ -883,7 +976,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:a96f0ef021a6629120e5af7c98fa483d31de92cea37f98b51528a28dee38e16a + content_hash: sha256:d862636a23c6d64026982727588db1582499b72c774ca429578a57321fa89e19 - kind: project-relative target: claude value: .claude/skills/agent-author/references/create.md @@ -982,7 +1075,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:5d487aadb0424eb162f19454488e3b923180163cf1a543bb977b6969ae7a6849 + content_hash: sha256:b177cae5eca7326850986b502bd5bf3c2c5949fddc124c70a6a98e8c4d3dc7a8 - kind: project-relative target: claude value: .claude/skills/agentsmd-audit/SKILL.md @@ -991,7 +1084,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:f4e1d3f1fa79ebd4c2c874dfb2fe1b86834c9ae708ab3f0a3fa07be39e90b552 + content_hash: sha256:f231a143f71a89a4ccbbf6d1579ea45c071b4f251a4b97e07c70d001ab7ba0f5 - kind: project-relative target: claude value: .claude/skills/agentsmd-audit/references/sources.md @@ -1063,7 +1156,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:c32b9fe1cc7966d21d1ec504396d492afa53eb6369bd3b2678aed4ba92f331f8 + content_hash: sha256:cf9a33c658cbe153391072872cefe403762b37c9ddc74d7c6f64ac6e08dd0f8b - kind: project-relative target: claude value: .claude/skills/agentsmd-author/references/content-guide.md @@ -1099,7 +1192,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:d7bd79ee27997fffb5765c03358a700d8c00266ea120f6d067d74300d6c26eb0 + content_hash: sha256:f48ca12116d20584fd4582d3ba44a9f02cddab2ae2f12c41abfc3455b4640203 - kind: project-relative target: claude value: .claude/skills/apm-install/SKILL.md @@ -1108,7 +1201,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:4c0db5454bcbf895a89e7405eeefb4521a2b23f2ff28aa96c82c59708d8819ee + content_hash: sha256:ee0877665f2fd9ff4e764b7957ebb9b6f6006ffabc254cba8c2ecfeaf9848278 - kind: project-relative target: claude value: .claude/skills/apm-install/references/sources.md @@ -1135,7 +1228,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:40e85d2c2a7487b54c7797fb135b979b8df14b524928da8c7502723a0fc8d36a + content_hash: sha256:b9e422212c93b188ad0992e2cacb3ef475467b1e1c33981cf26946ce6f11de5a - kind: project-relative target: claude value: .claude/skills/apm-workflow/SKILL.md @@ -1144,7 +1237,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:60c2c3351b74cc8b3cb468e1cb353815214e7913ab118c30c9172f4c7f264844 + content_hash: sha256:ac5738fc899ae259977df7b6c20695f18f1b1929e65909fce5311639f0a307d4 - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/audit.md @@ -1153,7 +1246,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:a336da288330a9f9d09b79fabeefbfc70f7ca81e9d86ef335c70a4eba3186141 + content_hash: sha256:9b3fe128cbe133c8f2880a968b4cd6e875cc0eb79ef6738a9bfdabdf28446fe2 - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/compile.md @@ -1162,7 +1255,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:f0b7b99e56937290ed6c1db52e542283670e369a2cc55f8a3c5dbc48d4252f7a + content_hash: sha256:26bbdffce73dce9b1b5589b24aec521c7a4d842c94e5a555031144afda4ce437 - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/configure.md @@ -1171,7 +1264,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:c92d7c23c6bcb4ce0b56cce43fe399c085d698fcf58243f416bc84f0e058d7a0 + content_hash: sha256:0b053dad39543679c72d8267667b49c9823f6bfeca781f0caf4e26d7380be1fe - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/install.md @@ -1180,7 +1273,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:1615e31460f8cc820fca162175b8689ade1324604aa1c8f204cbc8924d74b5ee + content_hash: sha256:e729386bee5e2b67ce16b4c6c85446ce7b47d3122b68c148a571bd00a8550ad5 - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/marketplace.md @@ -1189,7 +1282,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:0f2fdd21d8080f3b34ddee8abd52431903aeb67878842de99198a868dc43ef67 + content_hash: sha256:d170ae4853d6f0f369667044e6e124ba8bc3d9235a268240ac45d58973481dfc - kind: project-relative target: claude value: .claude/skills/apm-workflow/references/sources.md @@ -1208,6 +1301,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/caveman/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:f512fff0ddf11ae216c6806d4c2ad31e130de6ed360c89a39787c2ff6f4a2c62 - kind: project-relative target: claude value: .claude/skills/caveman/SKILL.md @@ -1216,7 +1318,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:b4bb6fe3bf3da222993ca0aee5e7c6f5368b182dd30ce1172e8f8e3280eb7052 + content_hash: sha256:817ed2655c2188c5c0b1e1dc5f4e762e699ad7fcd2a056e4ef73d5f6601dd1f8 - kind: project-relative target: claude value: .claude/skills/diagnose @@ -1226,6 +1328,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/diagnose/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:ac59366a09f74bce57d45ebe06e8afb7d12166351a4756a7b89f71ab9e0fc450 - kind: project-relative target: claude value: .claude/skills/diagnose/SKILL.md @@ -1234,16 +1345,34 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:28886402bbfa0470248086eab9106a103b964b76ae9496e63ff0c8a6761b6d13 + content_hash: sha256:0844ba2bbede408be2e54a20cacd2e280c275c11ba45173381659a76f0c54cad - kind: project-relative target: claude - value: .claude/skills/diagnose/scripts/hitl-loop.template.sh + value: .claude/skills/diagnose/assets/hitl-loop.template.sh runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: sha256:b2932630950e5210075bcd6f850e5accf30c101c5367b29eac3a29b4dd8084c8 +- kind: project-relative + target: claude + value: .claude/skills/diagnose/references/feedback-loops.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:5ed81b331fcf7dfc229b92be7250fd786064f8363dbf55bf6b6e5e9b5f5e1daf +- kind: project-relative + target: claude + value: .claude/skills/diagnose/references/regression-seams.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:fdb24c383628d239e54424f72258860612d6fe8a1fc5d0057ab5073628cc71f4 - kind: project-relative target: claude value: .claude/skills/forge @@ -1261,7 +1390,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:2151b952f4438cd9212edd97de90eec06f027f01121b3badb9d32dc9c45320c4 + content_hash: sha256:e7bc187af3072cb554ffeac5a90e24e87b3e086ba7c8fc104b7b542237070dcc - kind: project-relative target: claude value: .claude/skills/forge/SKILL.md @@ -1270,7 +1399,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:4de4c629cb4aec4c6cac5347163a86fe123299f131510dc43857597ded6ae497 + content_hash: sha256:a87b5c375c42142eedc2452b2b9b48033a18fb649e94a458f22cfbd4b0accfe4 +- kind: project-relative + target: claude + value: .claude/skills/forge/references/apm-routes.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + content_hash: sha256:b7d74d12ff34648be968db3e9db66c1be2efa420cad0eceea20374aa100659aa +- kind: project-relative + target: claude + value: .claude/skills/forge/references/author-routes.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + content_hash: sha256:3f60ba054d4823adeccd8a83ad06b39860bd599df94056aa94c3d9e4293e0c1f - kind: project-relative target: claude value: .claude/skills/forge/references/sources.md @@ -1279,7 +1426,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:a7f614c0ab37aa403545e191722bca012836162dcab30ff8ac984cbb25ad68cd + content_hash: sha256:08f5c6857fef904e48cc9e8cf159673c2f70c6d27e851175b8ce929b1de08243 +- kind: project-relative + target: claude + value: .claude/skills/forge/references/version-bump.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + content_hash: sha256:8046a8a2a2b019800101cc215e8ee87bdcf42cd6240ea1b484537a06baf27bef - kind: project-relative target: claude value: .claude/skills/git-branches @@ -1297,7 +1453,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:1d59fc21bcaad298a81e5b1c13cf2a396b13ad59a09eeb63f95165f9216755d3 + content_hash: sha256:72ff2e422f39c306fa53eb65c73761f48405cdbd42a3eb98d48c304318c9aa3f - kind: project-relative target: claude value: .claude/skills/git-branches/SKILL.md @@ -1306,7 +1462,52 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:29d19cee09cd3be3d26db86a228aca9d41833c53945e53e5b26e4339f5c35f0c + content_hash: sha256:3a0bcc9a0fce6d0789466a798161743d54d4251b7a4256b87a7cd9d3c0f5b458 +- kind: project-relative + target: claude + value: .claude/skills/git-branches/references/branch-operations.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:c682142f969e943bae3a05cef24ce9661a4b36861da3b115cf07d762ebed4933 +- kind: project-relative + target: claude + value: .claude/skills/git-branches/references/branch-patterns.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:1fdc2cc86634f45d48a3fc4326eec81e1331cef0f8406639f2a712ead2eb5f7b +- kind: project-relative + target: claude + value: .claude/skills/git-branches/references/comparing-branches.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:38f22b0324981a0ad60d29b336e0824b63b1108863fb3e9870f1d93e32f09d82 +- kind: project-relative + target: claude + value: .claude/skills/git-branches/references/merging.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:d144c237e7a8a1e709444af9e16c4d7804ba9f53fcae2326249d98885c48716e +- kind: project-relative + target: claude + value: .claude/skills/git-branches/references/orchestrator-contract.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:d4f5c6517acbe784133c174c076e57348921a3fc5aa12b11bb6cf13b30e087b9 - kind: project-relative target: claude value: .claude/skills/git-branches/references/sources.md @@ -1315,7 +1516,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:ee1c982caf67183acc51226bb5078b3409bb6965b720568f10d67e5f976ccb72 + content_hash: sha256:9043d5c90381900dcf7ad6b55b4a73ffee62e3ca6d23f1f89708de635e37534a - kind: project-relative target: claude value: .claude/skills/git-commits @@ -1333,7 +1534,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:c686fd6dd54c608889168cfeaf62e659d66e681194a95aaf5f84859513fda800 + content_hash: sha256:f4d2b60926e50a45dbf5621dbd62fb1239a4f3da1163402f7e1a82f0a8a8b568 - kind: project-relative target: claude value: .claude/skills/git-commits/SKILL.md @@ -1342,7 +1543,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:99826526958edffc2a897cc9622e3b2cf11c1bd9995c4a338a23758e62aad9de + content_hash: sha256:1658a63bc3209993580982c0aa7cbd2656a1d2b3519f2c421c65bf929c65ccfd +- kind: project-relative + target: claude + value: .claude/skills/git-commits/references/cherry-pick.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:1d8a89adbdaa37b4fdf8f2aed6b78e6767df5b46f97f083a0bd71288dfb7e1d9 - kind: project-relative target: claude value: .claude/skills/git-commits/references/commit-template.md @@ -1351,7 +1561,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:456d80208901106270687906c90bc35eb64595800c05b7b9340fe96cc1cf6a57 + content_hash: sha256:50869213d35b563f2b03d2d3782067842a239d378badab55de3cac5492227f09 - kind: project-relative target: claude value: .claude/skills/git-commits/references/conventional-commits-spec.md @@ -1360,7 +1570,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:b131b5a2edb9a5acd6bdcb72107099a26bbc172b9a5eb845da4daa2176e962f9 + content_hash: sha256:105175ba8244cd52096fde3746b4b671a82ba0337c7894dbc68a7d6a37646bc6 +- kind: project-relative + target: claude + value: .claude/skills/git-commits/references/create-commit.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:ac07f0c608b5388d6780b4ab353fb76974d8672423a2f3b6d80c69e8dbdbab4f +- kind: project-relative + target: claude + value: .claude/skills/git-commits/references/rewrite-history.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:99fb88d022bbae4d1c1b84642d590439fe3142881821a99ed856aaeca43b699c - kind: project-relative target: claude value: .claude/skills/git-commits/references/sources.md @@ -1369,7 +1597,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:7ef0293a96884c8935e3384cfb1c3c2c274d0aa0771ba8ac275e68f568d433f5 + content_hash: sha256:215814371e0a83e7231989cfaf095b6ac9fceda124ad17f0490e7ee615764523 - kind: project-relative target: claude value: .claude/skills/git-history @@ -1387,7 +1615,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:b285b5b8d771dd2f3482db8b2bd79835ebb6273bffbd8d01bca17d683baac6fa + content_hash: sha256:6219a74783b28e6005c0a69ad92f9a179c9bda3b911bb1790d15d690d3c5de6e - kind: project-relative target: claude value: .claude/skills/git-history/SKILL.md @@ -1396,7 +1624,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:d44ca7f6026624da21f9d31f1bb7a03524d83f30f2e83b54b0f72e9dc1524dfc + content_hash: sha256:dc117941d49c152e3d7e14f6e0595c308ab24378a24ff472a3f4ed98c003eb6f - kind: project-relative target: claude value: .claude/skills/git-history/references/README.md @@ -1405,7 +1633,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:96ef45f979c692acc9a8f745570d506efe8ed8a57015de02dc699bd77018c463 + content_hash: sha256:218187f9372a4027f6189420384dece791af74353adc9ea5b143e37c9ca3df5f +- kind: project-relative + target: claude + value: .claude/skills/git-history/references/bisect.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:75606d95ff592085b4bf35d09361ebbfcb8f3ba195a3f7d89aff187b99789a3b - kind: project-relative target: claude value: .claude/skills/git-history/references/git-log-format.md @@ -1414,7 +1651,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:e3a0711d7d2a7053bbd1bcd70832c65dd3348266c0fb330fd80a0b8f7c8f858b + content_hash: sha256:b17f36967c32b761a423bb14b900451208daa3be2dc6cba8709a6b60ad9b90fd - kind: project-relative target: claude value: .claude/skills/git-history/references/sources.md @@ -1423,7 +1660,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:4a9c9c2ff80193ad4c751ab4baf4c9c42db038a7ea5156733e3253c335912f5b + content_hash: sha256:5a0d78e0f3f301dda18e5198dfd5552e90a7250ae14113a8c2d86de68beb3ad8 - kind: project-relative target: claude value: .claude/skills/git-remotes @@ -1441,7 +1678,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:7f51c47e1671de9f0a63a8836b16caa68727105b62a4240716e457ed8d401f97 + content_hash: sha256:945896f6861c77259de0b5318b36c206f54e8b6ba70848d2b65847b64f3b142d - kind: project-relative target: claude value: .claude/skills/git-remotes/SKILL.md @@ -1450,7 +1687,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:801a81a26117ee38130d9171f9b16c6ae7a281ec3aa3535fee30578eb29c7908 + content_hash: sha256:88661a769ebb3d3b2bc64b58f11b2ff1c991ab6bc85e6f59c46e9472fe018598 - kind: project-relative target: claude value: .claude/skills/git-remotes/references/README.md @@ -1459,16 +1696,43 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:d590a7f2eb078710f44893b4866e821c840f48b7360f0779420d73331a3de597 + content_hash: sha256:530122741ff0638ca80500b1b376c284238589ec95d5f33437c840aa197e18b9 - kind: project-relative target: claude - value: .claude/skills/git-remotes/references/remotes.md + value: .claude/skills/git-remotes/references/fetch.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:80229bbd6d9e03e85e5ff49018181fb71003187f2c5e019869807e4e94aa4a46 + content_hash: sha256:150c68ef952fafb02f12f1506bfabc5d1fe3b7fc1fcd5df0379943597f808b3a +- kind: project-relative + target: claude + value: .claude/skills/git-remotes/references/pull.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:c06eda4c8090fb07d4b788f8fe2b6efdb0b0ab8c27eaafe8b077745997a22962 +- kind: project-relative + target: claude + value: .claude/skills/git-remotes/references/push.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:880e630792494ce4fab52e7965d548df7bfeaf2a8ba0a4ee775a1299810002b3 +- kind: project-relative + target: claude + value: .claude/skills/git-remotes/references/remote-config.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:779458aefcc932b90567b119b677789c2010e12eb38c5ad52f1be2e822c55019 - kind: project-relative target: claude value: .claude/skills/git-remotes/references/sources.md @@ -1477,7 +1741,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:33e966aba6946cd78d2b9e325670e5292ccdf73d90fcdfca70afb30ee70c1f2d + content_hash: sha256:ab4bbb3234eca2f2e71700d83d148dba44b741b7f0515ffe051380a43a0f7c84 - kind: project-relative target: claude value: .claude/skills/git-submodules @@ -1495,7 +1759,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:1510e9691d5107c436bda3497066950bfd2e9c9612cdf8ebd40f5ec73780ddea + content_hash: sha256:8589e78051a811055b382790252f13a00bd0008ebc220cf023efb05d0d12bd77 - kind: project-relative target: claude value: .claude/skills/git-submodules/SKILL.md @@ -1504,7 +1768,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:3b4525c5e7145d30f4a945bf5f2429cca270f00e88ed85ff79c6d5fa89fa05ca + content_hash: sha256:ef16cfa16b916423e1d5855587403788b4034166318525adcd5dc1ea23cb0bcf - kind: project-relative target: claude value: .claude/skills/git-submodules/references/README.md @@ -1513,7 +1777,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:ef5453d5e87fd62568d8c1c55fccfc41f6522316976a8f2cde7aa90c1f857809 + content_hash: sha256:217eeefcb78dc9f48e351e9bed4776c54220564f09888b137c1adbe5d5342971 +- kind: project-relative + target: claude + value: .claude/skills/git-submodules/references/removal.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:604d76043ca8644e9425d46593be3267ba3f54e36cfbd454570ef5a9ac962ea8 +- kind: project-relative + target: claude + value: .claude/skills/git-submodules/references/setup-and-update.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:7f03634a15736deac462cd21335f8bda7d2662f36d91a7127ad6b7105361021e - kind: project-relative target: claude value: .claude/skills/git-submodules/references/sources.md @@ -1522,16 +1804,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:1786dcf90dd21988379a5ee4f243b50a158d87bc059d4903bf54ef268811c5e7 + content_hash: sha256:17187d35af6f6f2dc6515f661f291525cdc7383c731d0547e12521f744c2e604 - kind: project-relative target: claude - value: .claude/skills/git-submodules/references/submodules.md + value: .claude/skills/git-submodules/references/urls-and-config.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:ffab8cef061118a83ef480c5e8077c0e1ac2fa7e5e1fae333cfff9bfd362003f + content_hash: sha256:b1269515cf549d52fcf122cc5cdb6fbb56bc4ea974e77d36eef063aa86c7cbec - kind: project-relative target: claude value: .claude/skills/git-workflow @@ -1549,7 +1831,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:00844e92a521b46273e1c9ee334440c868348c1795ae86eb7fd95fb86dbbfbed + content_hash: sha256:cc96c23118e821a2e9ab1f6370484ea5cc97f3a0fd285c1b7f3782f0de62117c - kind: project-relative target: claude value: .claude/skills/git-workflow/SKILL.md @@ -1558,7 +1840,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:87a3f39fab4db85ce8d2b23d01d1e8b2180bf0a73eb18183eae2d7e28c2cc42b + content_hash: sha256:06c737da977e4a624a1100fdc502d2e250692cd9f870a7bc3eefac5835c511ef - kind: project-relative target: claude value: .claude/skills/git-workflow/references/README.md @@ -1567,7 +1849,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:f6aa9351e7d87421f64573a0b1db5b400b0c2c2686097625070e5f1113d72426 + content_hash: sha256:27f978e69d5ffbcdd99c28ff42361da7824e7466b6a34cbf7c4b0feceb16f1ae +- kind: project-relative + target: claude + value: .claude/skills/git-workflow/references/hard-rules.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:7c7a6888527a3925333e0d44129de819d8c5e5161ae1de8551b2f1536d3b2ff2 - kind: project-relative target: claude value: .claude/skills/git-workflow/references/sources.md @@ -1576,7 +1867,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:186c6fec31bcefe10bf4409d8ef9b6fdfff6185b431f30c66712d0669df0be55 + content_hash: sha256:e8078edd12bdbe0c81a7796f330ae2a06d78129ff20038c6bf98a8e638860786 - kind: project-relative target: claude value: .claude/skills/git-worktrees @@ -1594,7 +1885,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:084c936cf0aa2fc808e5fcf8acaec148d93d8ac03a99a6f3d06137adcc14585c + content_hash: sha256:eeec5c51f9e0353b9cfcfd3b7309ac23d0fb3a1fdacb9006d6d2fc1c0ef099dc - kind: project-relative target: claude value: .claude/skills/git-worktrees/SKILL.md @@ -1603,7 +1894,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:2ea1122b4f8bc864a85248bde6983a930ad3f91b60286a761cb0de361b25183f + content_hash: sha256:4758187c798ddb90ebc3e18e76021159aaa857bc3cdd7f8b211a2d6f616db6bd - kind: project-relative target: claude value: .claude/skills/git-worktrees/references/README.md @@ -1612,7 +1903,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:ea2f3249fe0d0af24fa91f4d050f2aead9fc84841333530bce0ddfc7378d56c5 + content_hash: sha256:0778b6c81f7e77c84476fd966195b19f7b1c4553d35f5ffa016f72405c943c29 - kind: project-relative target: claude value: .claude/skills/git-worktrees/references/sources.md @@ -1621,7 +1912,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:5b7fe81f56eb03360a4719f2a988674f43891f7a2bfc14756d68398088767e36 + content_hash: sha256:f4264a817836959685bfc286209d997295bb964524ba4e17027c39f25c3bccfd - kind: project-relative target: claude value: .claude/skills/git-worktrees/references/worktrees.md @@ -1630,7 +1921,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:38999d4d07d85c6142495c3765d56a0b5fdf861487a9347317f6b054a7d3dbc8 + content_hash: sha256:655fc3e9848e58a4c996efdd2fa1a90f43cec22a455ddb678959f347d2bc4ef0 - kind: project-relative target: claude value: .claude/skills/gitea-branches @@ -1648,7 +1939,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:ce7bff9d60a3edd4655af9b4f3bb51520ffc2ff2a90f98f55e29a1b72dc5e3ee + content_hash: sha256:2f9a0f16351c8b2d6dbb71724d372bb9c267b345b12948ecf840fe4f21faf650 - kind: project-relative target: claude value: .claude/skills/gitea-branches/SKILL.md @@ -1657,7 +1948,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:0d8a1ac2e450d60c123ae1538dc8cca49b270da410d2e031cf250cdded2bf839 + content_hash: sha256:1ac80735b5bccf47b7faaba7d077e6c48c9c43970fc9307104b8986efab90934 - kind: project-relative target: claude value: .claude/skills/gitea-branches/references/branches.md @@ -1666,7 +1957,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:f045fb181d2fc1c948a2e026c335453273931f3a8d710a45b05826547ffe89e2 + content_hash: sha256:cfc3323175ff56d155b57a65194dfa32459a5a1a4f1b266bb62e05449e39a27b - kind: project-relative target: claude value: .claude/skills/gitea-branches/references/commits.md @@ -1675,7 +1966,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:ca70a1c32ff6abf296a027c27c678f1574eddfdc069d7ed4ae621524dcd9adc0 + content_hash: sha256:7ded733117e3bf8c1a5bba54786197ad72aa9f743d27afafd8c36242ab7b0ce3 - kind: project-relative target: claude value: .claude/skills/gitea-branches/references/sources.md @@ -1684,7 +1975,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:1bfad24252356c6005935ccc10a87871709d4b41e6b2d69abe9ac7ab188f4bcd + content_hash: sha256:f206f9ac91146771539cbf288e73d1202d22f05414d9d1806d0dcf5c7ad02152 - kind: project-relative target: claude value: .claude/skills/gitea-files @@ -1702,7 +1993,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:f9d721b7ed8eae43b5eab04324dbc96fa91964accc77ea74d1b889475592256f + content_hash: sha256:2b9bfafdab57af61f3330fdb37070c3d301ee73c6631fde9cb36cdf28e88c466 - kind: project-relative target: claude value: .claude/skills/gitea-files/SKILL.md @@ -1711,16 +2002,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:9362d82068257d0aee113fd55f2acf4d53e8d20f638453946b76384a8c49a9b7 + content_hash: sha256:808612acc0c28fde06cdecefa1d0d413129c7110059041616bc642ea596068c3 - kind: project-relative target: claude - value: .claude/skills/gitea-files/references/examples.md + value: .claude/skills/gitea-files/references/reading.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:26209f202dd0ec12c73bb62984f9fe42c843e2819dab89752fdf478444a5d79f + content_hash: sha256:93a5d8dd909ffdbf2bac09fbe7d819bd8fe26979808c5f5bf8ca5dcce435c752 - kind: project-relative target: claude value: .claude/skills/gitea-files/references/sources.md @@ -1729,7 +2020,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:71981b2987c56589e469f2305afbf7d404e605c8db1a6d50c1576d50eb9eea9c + content_hash: sha256:4fbd03f275fb72899fc4489737f13074dfb61704965bd2bd52a372deff426fbb +- kind: project-relative + target: claude + value: .claude/skills/gitea-files/references/writing.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + content_hash: sha256:3a5b0b5043fef2c55a0b009a6bf7998a45c3e5770f8b7ac11abd4a1e7b6b351e - kind: project-relative target: claude value: .claude/skills/gitea-issues @@ -1747,7 +2047,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:2f5844cf2fde1a62844eb26ac19f915f50fe8fdc5bfde982be018ed2d0e15c30 + content_hash: sha256:b2781529ea793022765dd4aa96faf5d3dcdaeb088c710b14201a4e73bb1cc580 - kind: project-relative target: claude value: .claude/skills/gitea-issues/SKILL.md @@ -1756,7 +2056,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:9084c5f37d23ebcc6de5940ad8fcc1c699aa7d4693623bf029a031b21412e7d6 + content_hash: sha256:2b776f204579142e27885a9d6f4456076bf2262d785016c46a973afef44797b6 - kind: project-relative target: claude value: .claude/skills/gitea-issues/references/enrichments.md @@ -1765,7 +2065,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:024872fe787688f7ff51c856264bd3405208543fcbccd113cce464135dbc9f90 + content_hash: sha256:1daa0758116e818f12f89fa43b031d9cd2518f73de95bc54d94d5536667b68e9 - kind: project-relative target: claude value: .claude/skills/gitea-issues/references/issues.md @@ -1774,7 +2074,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:5c8103944f316f7681ee2b3d5ebbc55dc73a2f5a25616325c87af03b93944a04 + content_hash: sha256:7a1c4c42413df84645fbea70b29b2dcd732f52bfee259b2e28506dc101eed9f5 - kind: project-relative target: claude value: .claude/skills/gitea-issues/references/search.md @@ -1783,7 +2083,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:dec2a98a9d781122d235b8a3fa6cd9efdcc08be0a2b71eb29f90a6e14338c0af + content_hash: sha256:651a4493b166a498932bd0902d16efde273c49c6fc597bfb0e1b1c0296f7a742 - kind: project-relative target: claude value: .claude/skills/gitea-issues/references/sources.md @@ -1792,7 +2092,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:86d5c500e103d5eea31595ab04fb79d9e908215d83d2f0edec1e0e73995d2e96 + content_hash: sha256:d6d358029298537db4d13dea84ee274006bce3e7f99b1aaed963d8703cba2250 - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones @@ -1810,7 +2110,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:185dd654d9d775fe0b0464a0dbdf724b06f6375fa6d7c7e200ee826fdcc9b4b5 + content_hash: sha256:4606f16d1639f0a2fe46fcb341a54b673b0bbaeef12c197e2022bdf57b479c37 - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones/SKILL.md @@ -1819,7 +2119,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:ce07c4c8827747b13b3d9ea9d20f8318ace0803f2bd42804e717ed9201c54254 + content_hash: sha256:52aec1a75050b46e3c386eb20454c7a9bddf9bde9a38ab3331a9b06d2e0f5302 - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones/references/label-inference.md @@ -1828,7 +2128,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:da141129c74d22a441303b910b68d5bb758435361efbd8d2669f46920d699361 + content_hash: sha256:9aa51cc751f692932b5eecee698eba6eaa3e9f13e423e0fd3b13ffecaf26fc0e - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones/references/labels.md @@ -1837,7 +2137,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:be8ff5ce4dbfb31dd2bdcc425a769dca94887c5c8acd47c78e1e21ccfc24dcba + content_hash: sha256:365730208ccbdf0f8fe3b2b49c1539208811029e3c343edcbe39b674a46a0527 - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones/references/milestones.md @@ -1846,7 +2146,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:ff1f1b0c8ecb6967c940d1ca8bebf2a2c7995414936f8ac7f5ff23d1dc01ac3f + content_hash: sha256:0b26f006cfb154d13b2a2fbf356b74f6339e7ab9c34041d50ade676f6c2d17d8 - kind: project-relative target: claude value: .claude/skills/gitea-labels-milestones/references/sources.md @@ -1855,7 +2155,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:a1a1d3381dfb0dc8f331be0b3ab49f28e94b992fb4809ca09be91ce33047dd1e + content_hash: sha256:b0a1c8cb678e21cf284e4efa5b75a2414c76a8e3898c449e8b60504d1d465bd5 - kind: project-relative target: claude value: .claude/skills/gitea-prs @@ -1873,7 +2173,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:31b6ad46379feee8ac7d837030f93ec04be20b7d11021b295dc6d27b4340a05b + content_hash: sha256:c8c11f5e3cfa7768fe3dfabf935564e5b08d1f7f6629d1dc2149c28b3b8e8ec0 - kind: project-relative target: claude value: .claude/skills/gitea-prs/SKILL.md @@ -1882,7 +2182,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:bf70832f3d97064c9816d680390da84c256a971d7804317e1814b4ee6a622b4d + content_hash: sha256:ec4b0c38a70cdcaf374ff92a706fcac151dc7b8e358dac36bd202ee3444ea799 - kind: project-relative target: claude value: .claude/skills/gitea-prs/references/merging.md @@ -1900,7 +2200,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:d6cefd0cf270f8d844536311e67bfa45cd07f024aa0a649de1938af306ae7109 + content_hash: sha256:6f4b9de079ebe248282243a2920016bfb172d4115ad712feb1757bb57d5eec3e - kind: project-relative target: claude value: .claude/skills/gitea-prs/references/reviews.md @@ -1909,7 +2209,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:1089cf45a75a562bbb29de6538848c4f4bd627d5a7e36bf9b2ab6496f45f962b + content_hash: sha256:97cef439e20595ab90cfa0105cff3ef39a53989172a9c0603374d16498f426b5 - kind: project-relative target: claude value: .claude/skills/gitea-prs/references/sources.md @@ -1918,7 +2218,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:ac48a3018443b56acb5c3d55d6c04e62103f5bac71b8185e2bd085fb7e165431 + content_hash: sha256:e2c2792013550f99281f517310bd76d2e5d56751ace6da117ce602048d5342c5 - kind: project-relative target: claude value: .claude/skills/gitea-releases @@ -1936,7 +2236,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:102625066c34c7b5a16e25b7506a87f876e9b123b334f5ffba73ab1523a57ed7 + content_hash: sha256:e5d2dd0748990c1d99f2065c97c275bb14eb4fb447c94e76c332bc5952fadb99 - kind: project-relative target: claude value: .claude/skills/gitea-releases/SKILL.md @@ -1945,7 +2245,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:793a6936c0d56acb4b4aba1d72e1fc91690273df0aafe447e54cb53df00319c1 + content_hash: sha256:f3b9e867abf0fe3be88dc34242b18d96bd0f361252d7472ecacdd310689d36e0 - kind: project-relative target: claude value: .claude/skills/gitea-releases/references/call-signatures.md @@ -1954,7 +2254,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:a523dba171d67a7e7899b7d8ecfe9220f250da2c184b0f2806e5d22647b1ffb0 + content_hash: sha256:1f7b40c390a5d032f8a00609194d8ce2107ac06d420b56d316837a6ec7dda982 - kind: project-relative target: claude value: .claude/skills/gitea-releases/references/conventions.md @@ -1963,7 +2263,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:1c8102ed489422706babea4e43e12dc7684b7dacd210fa29b3793bffa9cd9f64 + content_hash: sha256:2a5613796701d0e27eaec1f71a1dc12f5fd5c2861ea001689d057da8c830cfba - kind: project-relative target: claude value: .claude/skills/gitea-releases/references/sources.md @@ -1972,7 +2272,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:37a14495c461120a5bab0013531c9e83e7d9b670e78129a9439a81b48a64cce4 + content_hash: sha256:30c43a93f4d7ea05ef3d013a68f8656317ef6cef6773ce9944d35b24a93bdc80 - kind: project-relative target: claude value: .claude/skills/gitea-workflow @@ -1990,7 +2290,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:338f79d0b3c25741848fce841a5094ef27cbc7e4a6228404557b2d9594df68fa + content_hash: sha256:508d49159db9b70bc4e1c8f0a440ec4c88b9941b4a83a60e1c2e9e286c0d0621 - kind: project-relative target: claude value: .claude/skills/gitea-workflow/SKILL.md @@ -1999,7 +2299,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:a8266ceb335c56eb68cc09b3f81690c52c4dada9f25b48c3a46ac46b0ad3b761 + content_hash: sha256:93b64305f9232feae4c39aff33ebf8ca0ea9599b24cab0d838553868dd9a699e +- kind: project-relative + target: claude + value: .claude/skills/gitea-workflow/references/number-resolution.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + content_hash: sha256:0242430246fd572e4e0c3715d557e425cd7d3260bba76f56856255b340184c3f +- kind: project-relative + target: claude + value: .claude/skills/gitea-workflow/references/skill-index.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + content_hash: sha256:b53d8148ea8cf6e4cabd15cab39f60b98167d930f590ca0fdcb5f2f3969edc5e - kind: project-relative target: claude value: .claude/skills/gitea-workflow/references/sources.md @@ -2008,7 +2326,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea - content_hash: sha256:171d3a5a36cb9d637302516501a1e9fc7a4bd058968dc9244412c335aa2de68b + content_hash: sha256:21305440e8060adbdf5af2b946d2e173ad35f8326dd9e24cd1f769fefde92f7f +- kind: project-relative + target: claude + value: .claude/skills/gitea-workflow/references/status-checkin.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/gitea + content_hash: sha256:c6da98ecbe1d2919222bfb856cf10c3fb9971423e1eb6590a15f6fc7550f102d - kind: project-relative target: claude value: .claude/skills/grill-me @@ -2018,6 +2345,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/grill-me/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:4acbda2175bf003f1106a6912cf2cfb8d3d2623f391b1be6f417beb084a65b05 - kind: project-relative target: claude value: .claude/skills/grill-me/SKILL.md @@ -2026,7 +2362,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:74147eb6010a65957efef2b9e0f0b3ff935c1def7fc117697151b1d0f3610556 + content_hash: sha256:0af060d6813ed59547be14c7dfd544d5b626c852f7ec0f7213c27c7ec0ae76c1 - kind: project-relative target: claude value: .claude/skills/grill-with-docs @@ -2054,6 +2390,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: sha256:8f6baaa3b1c91644bd7c600196b1aee781d5f525c7c345db8cdfbfb368329a05 +- kind: project-relative + target: claude + value: .claude/skills/grill-with-docs/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:c94a826df0f85f17957b9fa2fe73d52ab1ff29d7685658b994721378eeea811e - kind: project-relative target: claude value: .claude/skills/grill-with-docs/SKILL.md @@ -2062,7 +2407,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:c7176600a8bffc9f359102cb041b6686387618b8e1434ba484dd708d45df6d5e + content_hash: sha256:26d06ea58adae5fa6ca8b406cc4a8d13ec3c9780bfb283c29ef0a8f8845f26f9 - kind: project-relative target: claude value: .claude/skills/improve-codebase-architecture @@ -2099,6 +2444,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: sha256:6feca2140439c54a774749e8367f18350899ff69c777144ed2248cd4407949fa +- kind: project-relative + target: claude + value: .claude/skills/improve-codebase-architecture/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:813332e95450c7e3e4c892f5edf777236d213fca40f3d1ff30ac7a644f2ea258 - kind: project-relative target: claude value: .claude/skills/improve-codebase-architecture/SKILL.md @@ -2107,7 +2461,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:318b3df6a557f3a9216e6c32813d543301fa51954ea79c87edb95e1297213584 + content_hash: sha256:4e54cc00ec301027f640ac5dd1877b0d9ec94c16e784da0cdab25e220167e53d - kind: project-relative target: claude value: .claude/skills/pc-author @@ -2125,7 +2479,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:2e21bd50002bd2622ebb31793fa4aece14f5233889c3a054fe99f1974f19bb40 + content_hash: sha256:f363d981e55aa3aafdacb6242ce971c0afbea36c7f2d9ce0dce88dab9c476aeb - kind: project-relative target: claude value: .claude/skills/pc-author/SKILL.md @@ -2134,7 +2488,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:577b9bd06615182ce3b0123640d989c3b74ab05bda8103a63a41e1f5a1abb2ec + content_hash: sha256:a7a9a34a5efa4a0ec9f73cd2bc626d08dd0c2130f9ffc219e7bdd230eab717ff - kind: project-relative target: claude value: .claude/skills/pc-author/references/README.md @@ -2143,7 +2497,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:c409caf0e08af23f2ec056b649cee0bba22b55c1fbe4b8f1189ce0bbb9b5d5c4 + content_hash: sha256:8fc13224aa64f5931a4f3e06198f67ed621066a69384b95c61ad91d08e86e602 +- kind: project-relative + target: claude + value: .claude/skills/pc-author/references/create-config.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:6f52e367de858739fe87e67c1f7c6fbc21c79650ad14289441d2d13884deaee2 - kind: project-relative target: claude value: .claude/skills/pc-author/references/hooks-by-language.md @@ -2152,7 +2515,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:2c4ade2ac32e7a9c539d7e08b7d55739e8d87c634860bb58e8764067293bb35d + content_hash: sha256:9d585293c8801dd41a0f1842e5ac495be4552fc188c564bb074cb9244a189e19 +- kind: project-relative + target: claude + value: .claude/skills/pc-author/references/modify-config.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:7f1c90805e0467e857c67ae20fbb5968136c1e4c703076f2b2cd599990a71216 - kind: project-relative target: claude value: .claude/skills/pc-author/references/sources.md @@ -2161,7 +2533,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:e1cff11955490e4948fec81d8172b0adc5a37829aa0ffe1791c0f6313ed34a4e + content_hash: sha256:5546cccd0bf7e725e97de29c96da128a8e39ef1a23102ecd668018c74c30a4cb - kind: project-relative target: claude value: .claude/skills/pc-run @@ -2179,7 +2551,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:2e2ebd5220c3251a40afa6c06243ba12fb0aa03dc60fb76db74b22c44914f353 + content_hash: sha256:dab1352741c11f8892720f352d38fdf7e501a416d9219d604476185aa3dc0e69 - kind: project-relative target: claude value: .claude/skills/pc-run/SKILL.md @@ -2188,7 +2560,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:7a0890f7447a04f464ca8a30e5a967ec4421e9ef41298d469f8f2a6ba03be0a2 + content_hash: sha256:3f8b75868ff9b8d7b79136c4b02c46cc2719dfb778c1bd2bb8115a2d76e6f95d - kind: project-relative target: claude value: .claude/skills/pc-run/references/README.md @@ -2197,7 +2569,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:ad42b9013dbd44b8c4515c15317c5e9e6b235bc656ad5a03e037eb4bc6f8782c + content_hash: sha256:913f47285687f72716b95cb33a2036327fb4335c4d935aa5cfc2bc043b639773 +- kind: project-relative + target: claude + value: .claude/skills/pc-run/references/autoupdate.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:e0c3c53f8dfb2f1cccaaa38e7902f5b7196a128c41cdd7dfc4e95a5da6fecd9a +- kind: project-relative + target: claude + value: .claude/skills/pc-run/references/clean.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:49a66a985c5adfabc876da4e0a2355fa8c22cbcbfbd7548e4b154b094080d87a - kind: project-relative target: claude value: .claude/skills/pc-run/references/failure-patterns.md @@ -2206,7 +2596,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:59d913c001483c3770d269fdf5e83cf1d7578e0ae879928a1404bf93bb395994 + content_hash: sha256:c4ebaec91cbbfdb15cce5601b0e86e8556345ec34de9846e0f66c628be06836a +- kind: project-relative + target: claude + value: .claude/skills/pc-run/references/install.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/git + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git + content_hash: sha256:71ec08d58b8797b09574a827ea06d2c9656e3394d40534860fdaf333f5c19070 - kind: project-relative target: claude value: .claude/skills/pc-run/references/sources.md @@ -2215,7 +2614,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/git active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/git - content_hash: sha256:7ca8b7106e7ee5c2c7d1fbd3dc9e0d2a89c18eba79145cbab55bc8e39eef9087 + content_hash: sha256:f23b3f50045bcff9644019c629451ffc90fe9fabf8dbfd3011c16ef011e48aab - kind: project-relative target: claude value: .claude/skills/prototype @@ -2227,13 +2626,13 @@ deployments: content_hash: null - kind: project-relative target: claude - value: .claude/skills/prototype/LOGIC.md + value: .claude/skills/prototype/README.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:da91dc92195c00d5dc33863b8c1a030998025a0f8583ebf2babd770825b7f70c + content_hash: sha256:4f09d8742b017da6da3aa87d55a26937dda9ad2a3dcc0e45df62e26d6be10983 - kind: project-relative target: claude value: .claude/skills/prototype/SKILL.md @@ -2242,16 +2641,25 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:913df144c79658394b7ccc984858103a27553eeff9a8bf93dc51486603259d0f + content_hash: sha256:873d3c3bf9e46af5e61598a9030ac0304b58f900f48f102e7322c825d5fe435a - kind: project-relative target: claude - value: .claude/skills/prototype/UI.md + value: .claude/skills/prototype/references/logic.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:d76d565149ee50456c5ddc5e29c27fec8737637874fe5c37d970db085a200b27 + content_hash: sha256:05c193ce98ee01ed3d7558891efa97c8f6a3b61605f24d18f9d405aef7d1b58d +- kind: project-relative + target: claude + value: .claude/skills/prototype/references/ui.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:bff1746d1f0c5ef42d8c2fac33637249a78a6c0c92cfdf906da933e2e1104ec6 - kind: project-relative target: claude value: .claude/skills/provider-adapter-author @@ -2269,7 +2677,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:9aa132d5ffa7f249fa4c8f0e90f8505c1f1d0dcdd681e7930e5b0236407038b5 + content_hash: sha256:ad6d674667fb810823a2b2115a9d6740b1dbde06af23e6315c6b4fbd44097823 - kind: project-relative target: claude value: .claude/skills/provider-adapter-author/SKILL.md @@ -2278,7 +2686,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:7d2d9c9555373fdac86683c517fcccca1d090347c9c1d13f91942763219d2053 + content_hash: sha256:7e22858832bf95cce89cc5d3a3044bb0b811deed3c3974351bce040629cec59e +- kind: project-relative + target: claude + value: .claude/skills/provider-adapter-author/references/provider-matrix.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/core + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core + content_hash: sha256:30d712d76530dda0a82d600c710e43fa856537ba17391fb8fc8b4304766b706c - kind: project-relative target: claude value: .claude/skills/provider-adapter-author/references/sources.md @@ -2287,7 +2704,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:45dfe2ff95744d7a00fa5b75be216562ff84047f21588ef244e89bdc2e5ae1bb + content_hash: sha256:5cf7ded132beeed77b2069602015852bf18757fe9cd203c3e9c3e9064f8185bf - kind: project-relative target: claude value: .claude/skills/provider-adapter-author/scripts/README.md @@ -2296,7 +2713,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:196aa7752b2df4710b397e1927f68b0b966caa8a3b1006122ef6e184882af01b + content_hash: sha256:79095c5be4c3abc937053f1a0977fb6cf737111061fde561973c81f8e2192529 - kind: project-relative target: claude value: .claude/skills/provider-adapter-author/scripts/validate-adapter.sh @@ -2305,7 +2722,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/core active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/core - content_hash: sha256:519c8ab3d33884821a6090ec5ba0322ec1594f9c1ca388b44279133a1e0fa9be + content_hash: sha256:aff693f69b987fe74a5d4c60368118dae7595c087d0de9691f5905e62ae3e1c9 - kind: project-relative target: claude value: .claude/skills/research @@ -2317,13 +2734,13 @@ deployments: content_hash: null - kind: project-relative target: claude - value: .claude/skills/research/META.md + value: .claude/skills/research/README.md runtime: null scope: project owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:81a31d9ba20988b07bd4e141f0a7369d4dda302772d62809cc8b223ca1fbb84f + content_hash: sha256:b5fe17aea6a398ceaeebcab9cb2c31ff8fcc806d5793a257916dc16b6ecb9933 - kind: project-relative target: claude value: .claude/skills/research/SKILL.md @@ -2332,7 +2749,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:9ca6b3b8c9c1d04f93a6ef55149d0eecc9ffa82a28db9fb3f9b588c661b1b747 + content_hash: sha256:245cec403e83b8c7fbc0f17e684858d49f06d35a3bcbb5f967f81c4efe5bdafc - kind: project-relative target: claude value: .claude/skills/research/references/file-format.md @@ -2368,7 +2785,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:78bfcfb16bbeef814b83f37a4a5185886003f9442a6d0e7e94be56f54d18d7a5 + content_hash: sha256:fe6002082a5da01579dd2693a3c4cc2ab557d5c63110c818b312fbccb98d0534 - kind: project-relative target: claude value: .claude/skills/skill-audit/SKILL.md @@ -2377,7 +2794,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:57a9336d409c883dc9a78aa92a9f0075fac6f8e4aac6ee8fdab705055ef85162 + content_hash: sha256:492d0895374b31f6b65068fd388f0161b47ddffdafc99a571cec4ae1faa0f798 - kind: project-relative target: claude value: .claude/skills/skill-audit/assets/vale/.vale.ini @@ -2440,7 +2857,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:f8a27d7266f4453781712f0bead151580158581a445a641613203a67a1c337d7 + content_hash: sha256:0029e78e0024c50e8e9d3a57f4ae38c34775468193635fdf37bf806b6228c813 - kind: project-relative target: claude value: .claude/skills/skill-audit/references/description-quality.md @@ -2449,7 +2866,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:2d37eccb4889cade6cbad0deaaed6d1f5fe4c3276c5438c244b2f87ae27bf432 + content_hash: sha256:bddde053e051cc3e66db46dfbf2f8b422618ecf2f918e3ad5deb2d9dc2433e03 - kind: project-relative target: claude value: .claude/skills/skill-audit/references/file-structure.md @@ -2458,7 +2875,16 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:b24638bd639ef048da171f6dc711e345749cde3c70ec6ba1b7fcbd696b921841 + content_hash: sha256:3b9d9281eab8dfbbcd403d1a2f253e768d13b258ace4d109d263639f26deff06 +- kind: project-relative + target: claude + value: .claude/skills/skill-audit/references/finding-criteria.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge + content_hash: sha256:1e613db280a183f8d44e1bcd76c49b910d14695b27157887f876726efd8824f1 - kind: project-relative target: claude value: .claude/skills/skill-audit/references/formatting-and-scripts.md @@ -2467,7 +2893,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:5c319866b2f22ba07789dae7b0813132f67196c508e8da23971307c2a9e57095 + content_hash: sha256:34a9b3e66b0f1852634a286891c0a9c00cb17bc49ddaa0b039c86f48f12bc282 - kind: project-relative target: claude value: .claude/skills/skill-audit/references/patterns.md @@ -2476,7 +2902,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:4a942ab30b95dc0cbf0fbe7da3b91157f166bce80cbd17bcf60dc365ea9237af + content_hash: sha256:411c0e9f00731c9c5258bb3fcebc74c1208ad8b51740e2fe41810cf72f7951fd - kind: project-relative target: claude value: .claude/skills/skill-audit/references/sources.md @@ -2485,7 +2911,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:1db16ea23884ac2db799b42d1284daaab4b24eb94f184a95fb67ddc280385934 + content_hash: sha256:d3bd14466fede4b62f6ac3d2b40712befcb028ed005c192beddeea31da752d8a - kind: project-relative target: claude value: .claude/skills/skill-audit/references/validation-scripts.md @@ -2494,7 +2920,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:44f3b82413b57f2b5671637bb449a4c01b6d5fcd9059245aaa38e45108adf480 + content_hash: sha256:e1436269c2e5f8ed15abd65bcbed0619c5b84618f327ec90a28634980376dcef - kind: project-relative target: claude value: .claude/skills/skill-audit/scripts/vale-wrap.sh @@ -2512,7 +2938,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:015376c5ad1f6bb6b53549537317a55e3ac06cd4e347451dba85879a3928ccbe + content_hash: sha256:47bd47b710652358ebc687adf370516f1aa25b228d2dace9b49e5bc725eb6f2b - kind: project-relative target: claude value: .claude/skills/skill-audit/scripts/validate.sh @@ -2521,7 +2947,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:7ce27df82e4160c6296db6c8314865f022da5c4334151857570a86167c8d4e11 + content_hash: sha256:1eaae273885f6a68b29086eca60ca72adb83a33d3391037b9461105d7fe9bf01 - kind: project-relative target: claude value: .claude/skills/skill-author @@ -2620,7 +3046,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:d350721118a2bd57094fa9151f11b48a663a1c8a04e50fba71ff2baf64b7282f + content_hash: sha256:8b4b1f4f05d5ee5398a332cc2ee48d59f0a09105dd84049f59ca040bda6f65dc - kind: project-relative target: claude value: .claude/skills/skill-author/references/create.md @@ -2656,7 +3082,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/kyberforge - content_hash: sha256:6c8336caa717f2abd38cb1f9c776479c0e908f7dbf577021d3689b375287dc77 + content_hash: sha256:414cf356bc7a23bc7af1f2b918159458bd59f3a35f48f00762718baa9f935918 - kind: project-relative target: claude value: .claude/skills/skill-author/references/scripts.md @@ -2693,6 +3119,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/tdd/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:ee7c9de4eb494f8a0e4e67153a5b44b560f7e53cc35f5ebdfbeb6dfa5bd1ed16 - kind: project-relative target: claude value: .claude/skills/tdd/SKILL.md @@ -2701,7 +3136,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:af059705061156fd4845ddbb736fe92b564118ac5f03551e09ef9e8f6d970638 + content_hash: sha256:46bc2a4c55b15e96fdd002167f37b43245e64fcbecb61daed11eac6e0d026da8 - kind: project-relative target: claude value: .claude/skills/tdd/deep-modules.md @@ -2764,7 +3199,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:1c71c747aa97d938f75ec7a4b8fe87451763b38a3ce6348acf2b222e5819b2e5 + content_hash: sha256:e34b7e9359b8b2b95b4d9795864f2a8ef5ef4f60b3632ddcb5563937110c71e0 - kind: project-relative target: claude value: .claude/skills/triage/OUT-OF-SCOPE.md @@ -2774,6 +3209,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: sha256:8ed8cf27833444060c81b3961a83c0e3d8e6cf2fcb2ddf6f8b07c6655cbb0d85 +- kind: project-relative + target: claude + value: .claude/skills/triage/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:9144c8d3262ad42f09d430e4cad17c16310919d68a91c17ac36f1285f6b4110b - kind: project-relative target: claude value: .claude/skills/triage/SKILL.md @@ -2782,7 +3226,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:b819f0285e4e5814ac6472d0217f07dc9f23d2fdae3ebb0dd31d98360d8ac029 + content_hash: sha256:42042bf7c3e6392d1ff0a0536fe0692fa710d6818e2501db77c7f22fa6e423cb - kind: project-relative target: claude value: .claude/skills/vale-config @@ -2800,7 +3244,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:faf6bca23cea74be7ecf47a31b0499af2f6ce791bbc82eb67069e1e67eeed07c + content_hash: sha256:d4326ddeab98d7fe24bcc7116ca059e4da8f6bc15981fef856803e3a0fef398d - kind: project-relative target: claude value: .claude/skills/vale-config/SKILL.md @@ -2809,7 +3253,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:1674f1256b654779268c42f764fa0c4f09011ce8ea62eb0e01fd8f118495519b + content_hash: sha256:2e2500f871b39b9168e45b8e8fb731c964637202b59368c193c20d96da8cd84b - kind: project-relative target: claude value: .claude/skills/vale-config/references/configuration-reference.md @@ -2818,7 +3262,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:1c2dbee6315178b00e624c002a6ae8d9d20f03f2c7ff1c3fba4eebe38fb39a7f + content_hash: sha256:1c4e22183d55809e79add7e3af353f5caaef903133b9c3f5088cc37f5230e47b - kind: project-relative target: claude value: .claude/skills/vale-config/references/sources.md @@ -2827,7 +3271,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:2efa451c3cc6bdc1103cfe56712a3ea35acef9a76fe4c6f71e8cacabd92dc860 + content_hash: sha256:71c73879827bdcd86019bb1faba20bb4bf02ccf610e939412110079efcd9a8ab - kind: project-relative target: claude value: .claude/skills/vale-run @@ -2845,7 +3289,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:1a850c89cf7de288dc72b96cae6fec24a3ccdc237f0ce785f59cca56c7762198 + content_hash: sha256:f25930095a9f9bba09ba3ff53b53606a40b2e5fddeb63cf071ed18c0b4076dcb - kind: project-relative target: claude value: .claude/skills/vale-run/SKILL.md @@ -2854,7 +3298,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:16c42c97de14ef20296b9dfce46b0e2f9be6ad68751c35975251cecff80f79d9 + content_hash: sha256:d5b5e87e51f145e3c4b9e91d23070bbb938ba19b07af30e92400f353ad7fd50a - kind: project-relative target: claude value: .claude/skills/vale-run/references/sources.md @@ -2863,7 +3307,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:1f46b727e5f3db09d6c8c01c8a615bad60ce2c5b3a01226e1a3fd3b933330bc7 + content_hash: sha256:c902480e6ba35926c58b2ce9233434340a5e4ec4f09cd112135c3f58f91b98c5 - kind: project-relative target: claude value: .claude/skills/vale-run/references/troubleshooting.md @@ -2872,7 +3316,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/lint active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/lint - content_hash: sha256:b4c2bc67b413b102d9fe1cd7e5a248b19aba3dc3b60b4429e777977cf8021cd5 + content_hash: sha256:3609993547c96c43b3b0f313e9f3c0611214cf14aad8420c2a168dc26c055115 - kind: project-relative target: claude value: .claude/skills/write-docs @@ -2882,6 +3326,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/write-docs/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:6d6310785603c1f4653be2ae9ffb37008cbe22eee49aed02ac8076ab20f95bcc - kind: project-relative target: claude value: .claude/skills/write-docs/SKILL.md @@ -2890,7 +3343,7 @@ deployments: owners: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin - content_hash: sha256:0d06d0f6836a67532497ea61bd5a1294a8d80f529bf1ffb5c4b1fdc72e9cb51a + content_hash: sha256:25af5dc9e67a0755bc7a2cb99a1008156ba1fd17b283bdb5cc82dfccdb834421 - kind: project-relative target: claude value: .claude/skills/zoom-out @@ -2900,6 +3353,15 @@ deployments: - git.dev.rkdr.net/Defame1297/holocron/plugins/bin active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin content_hash: null +- kind: project-relative + target: claude + value: .claude/skills/zoom-out/README.md + runtime: null + scope: project + owners: + - git.dev.rkdr.net/Defame1297/holocron/plugins/bin + active_owner: git.dev.rkdr.net/Defame1297/holocron/plugins/bin + content_hash: sha256:5c80fbcf7fc6ee5117872b146aacd630a3d2f2d86693e06aef2e3c8eea9115cf - kind: project-relative target: claude value: .claude/skills/zoom-out/SKILL.md -- 2.43.0 From a6eedacfd8bc3c25cf8e9e06c806a12145cfd870 Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Wed, 9 Sep 2026 05:13:52 +0000 Subject: [PATCH 07/12] fix(skill-frontmatter): check every file, scope checks to frontmatter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hook is `entry: bash` with `args: ['-c',