fix(kyberforge): trim forge description and body to ADR-0020 budgets

factory-audit flagged forge's description and body as over the ADR-0020
targets (250 chars / 600 words). The description now uses three boundary
clauses and the body is 595 words. The context: fork vs /fork gotcha moved
to references/author-routes.md, the only place the fork-or-inline choice
is made. No routing row or behaviour changed.

Fixes: #143

Co-Authored-By: Claude Code <[email protected]>
Claude-Session: https://claude.ai/code/session_01KkT7RSDwDbmrM9T34b6sTi
This commit is contained in:
Defame1297andClaude Code committed 2026-09-30 06:58:40 +00:00
1 parent f30fbacf14
commit cacfa1b374
4 files changed
+18 -14

No files matched your search

+7 -11
View File
@@ -1,31 +1,27 @@
---
name: forge
description: >
Use when the user wants to build or improve something but has not yet named
the artifact type — skill, agent, plugin, or marketplace entry; "not sure if
this should be a skill or a plugin", "I have an idea but don't know where it
belongs". Routes to the matching author skill. Do not use when the type is
already named — invoke `skill-author`, `agent-author` or `apm-workflow`
directly.
Use when the user wants to build or improve something without naming the
artifact type ("not sure if this should be a skill or a plugin"). Not a named
skill -> `skill-author`. Not a named agent -> `agent-author`. Not a named
plugin -> `apm-workflow`.
metadata:
version: "1.0.1"
version: "1.0.2"
category: factory
source_keys:
- claude-code-subagents-docs
- context7-websites-code-claude
- agentskills-spec
---
## Gotchas
- forge is an optional guided entry point, not a gate — `skill-author`, `agent-author`, `factory-audit` and `apm-workflow` all stay directly invokable, and forge never intercepts a direct call to one.
- Claude Code's skill-level `context: fork` frontmatter field and the `/fork` subagent command are opposites despite the shared word: `context: fork` isolates (fresh context, no parent access), while `/fork` inherits the full conversation. The route reference each classification loads spends that distinction: `references/author-routes.md` chooses between the two, `references/apm-routes.md` rules the fork out.
## Step 1 — Grill the intent
Call `grill-with-docs` unless a grill session has already run and is available in the context.
`grill-with-docs` ships in a sibling plugin that kyberforge does not declare as an apm dependency, so it resolves in the authoring monorepo but can be absent where kyberforge is installed alone. If it does not resolve, grill inline yourself rather than skipping the step: what problem the artifact solves, who invokes it and how, what it must refuse, and which existing skill or plugin already owns part of the job. Say which path you took.
`grill-with-docs` ships in a sibling plugin kyberforge does not declare as an apm dependency, so it can be absent where kyberforge is installed alone. If it does not resolve, grill inline yourself rather than skipping the step: what problem the artifact solves, who invokes it and how, what it must refuse, and which existing skill or plugin already owns part of the job. Say which path you took.
Grilling regularly overturns the artifact type assumed at the start, or splits one idea into several artifacts, so it runs before classification rather than confirming it. Run it inline in the current conversation — grilling is interactive and a subagent cannot hold the back-and-forth.
@@ -42,7 +38,7 @@ Match the grilled intent against exactly one row — or more than one, if the in
The table classifies what to build, not how to run it: a one-off task that merely needs an isolated or context-inheriting run is not an artifact and has no row here. If the intent stays genuinely ambiguous between rows after grilling, ask the user rather than guessing.
A real artifact that matches no row — a hook, an MCP server, an AGENTS.md, a research doc — has no route here. Say so, hand the user the skill that does own it, and never bend it into a row to make the table fit.
An artifact that matches no row — a hook, an MCP server, an AGENTS.md, a research doc — has no route here. Say so, hand the user the skill that owns it, and never bend it into a row.
When the intent spans several rows, chain the routes in dependency order — an artifact that must exist on disk before another skill can target it goes first, so `apm-workflow` scaffolds the plugin directory before `skill-author` scaffolds a skill inside it.
@@ -1,6 +1,7 @@
---
source_keys:
- claude-code-subagents-docs
- context7-websites-code-claude
---
# Routing a skill or agent to its author skill
@@ -10,6 +11,13 @@ definition. Route a skill to `skill-author` and an agent to `agent-author`. The
differ on the author skill only — both verify the result with `factory-audit`, which detects the
artifact type itself — and everything below applies to both.
## Gotcha: `context: fork` is not `/fork`
Claude Code's skill-level `context: fork` frontmatter field and the `/fork` subagent command are
opposites despite the shared word: `context: fork` isolates (fresh context, no parent access),
while `/fork` inherits the full conversation. The fork-versus-inline choice below is about `/fork`.
`references/apm-routes.md` rules the fork out entirely.
## Choose fork or inline
Default to a **fork subagent**. It inherits the full grilled-intent conversation, so the author
@@ -12,8 +12,8 @@
- **URL:** context7:/websites/code_claude
- **Research doc:** plugins/kyberforge/docs/research/docs/claude-code-plugins/sources.md
- **Description:** Official Claude Code documentation site indexed by Context7 — confirms the `context: fork` skill-level frontmatter field means isolated/fresh execution, the opposite of what the `/fork` subagent command does (inherits conversation). Informs the Gotchas entry in `SKILL.md` warning against conflating the two; nothing else in this skill draws on it, and no `references/` file mentions the `context: fork` field.
- **Contributing files:** SKILL.md
- **Description:** Official Claude Code documentation site indexed by Context7 — confirms the `context: fork` skill-level frontmatter field means isolated/fresh execution, the opposite of what the `/fork` subagent command does (inherits conversation). Informs the `context: fork` gotcha in `references/author-routes.md` warning against conflating the two; nothing else in this skill draws on it.
- **Contributing files:** references/author-routes.md
- **Status:** `extracted`
## claude-code-plugins-docs