set-core: Skill for Claude Code

.claude/skills/set/decompose/SKILL.md

decompose is a skill for Claude Code from tatargabor/set-core. It costs 0 tokens per session (2,150 once invoked), scanned B, original, MIT.

Decompose a specification document into an orchestration execution plan.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: reads .claude/ paths; mentions subagents.

This is tatargabor/set-core's own configuration. It tells Claude Code how to work on set-core itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything set-core configures →

Reuse

Borrowing it

Nothing to install: this file belongs to tatargabor/set-core. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/tatargabor/set-core/main/.claude/skills/set/decompose/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/tatargabor/set-core

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for decompose

README.md
[![agentmods](https://agentmods.dev/badge/skills/tatargabor/set-core/decompose.svg)](https://agentmods.dev/skills/tatargabor/set-core/decompose)
Your own site
<a href="https://agentmods.dev/skills/tatargabor/set-core/decompose"><img src="https://agentmods.dev/badge/skills/tatargabor/set-core/decompose.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,150 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin unknown No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.02150
Opus 5 $0.00000 $0.01075
Sonnet 5 $0.00000 $0.00430
Haiku 4.5 $0.00000 $0.00215

Measured today against content hash c72e386f8b34, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade B, and why

decompose scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

cat ~/.claude/projects/<project-slug>/memory/MEMORY.md
.claude/skills/set/decompose/SKILL.md · 180 lines

How it starts

The opening of the file, as written. The whole thing — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Decompose a specification document into an orchestration execution plan.

Input: Spec file path (provided as argument or via environment SPEC_PATH), optional phase hint via PHASE_HINT.

You are a planning agent. Your job is to analyze a spec document, explore the codebase, and produce an orchestration-plan.json that the orchestrator can dispatch.

Steps

  1. Read the spec

    • If SPEC_PATH is a directory (multi-file spec):
      • Read the master file first (matching v*-*.md or README.md at root level)
      • Use the Agent tool (Explore) to analyze domains in parallel — one agent per subdirectory
      • Each agent should return: domain summary, key requirements, cross-references to other domains
      • Combine results into a unified view before decomposing
    • If SPEC_PATH is a single file:
      • If under 200 lines, read it directly
      • If over 200 lines, use the Agent tool (Explore) to analyze sections — do NOT load the entire spec into context
    • Identify completed items (checkboxes, "done" markers) and focus on incomplete work
  2. Read project context (if files exist, skip gracefully if not)

    • set/plugins/project-type.yaml — verification rules, conventions, project type
    • set/knowledge/project-knowledge.yaml — cross-cutting files, feature registry
    • set/requirements/*.yaml — active requirements (status: captured or planned)
    • set/orchestration/config.yaml or .claude/orchestration.yaml — directives

    2b. Read design-manifest.yaml (v0 pipeline) — if docs/design-manifest.yaml exists

    • Load every route's path + scope_keywords into planning context
    • The manifest is the AUTHORITATIVE route inventory: every route MUST be accounted for in the plan
    • If no docs/design-manifest.yaml exists, skip this step + INFO log; the plan proceeds design-unaware (legacy mode)
  3. Explore the codebase

    • Use the Agent tool (Explore) to scan for existing implementations matching spec topics
    • Understand what's already built vs what needs to be built
    • Identify shared files that multiple changes would touch (merge hazard)
    • Run multiple Explore agents in parallel for different spec sections
  4. Read the project's memory index

    cat ~/.claude/projects/<project-slug>/memory/MEMORY.md
    

    One line per memory. Open the topic files that look relevant to this spec — past decomposition learnings, known pitfalls. There is no semantic search; the index is the search, and only its first 200 lines (25 KB) load automatically.

  5. Check existing work

    openspec list --json
    

    List existing specs and active changes to avoid duplication.

  6. Bind design-manifest routes to changes (v0 pipeline) — skip if docs/design-manifest.yaml was absent in step 2b

    • Every manifest route MUST end up in EITHER exactly one change's design_routes: ["/…"] OR the plan-level deferred_design_routes: [{route, reason}] list
    • A change without UI has design_routes: [] (explicit empty list)
    • When spec mentions UI for a page with no matching manifest route, emit a design_gap ambiguity with options: (a) regenerate v0 to include the page, (b) remove from spec, (c) accept that fidelity gate will skip for that page
    • Emit a design_route_map debug section in the plan's reasoning field showing each route → change binding
  7. Generate the plan

    Write orchestration-plan.json to the project root with this schema:

    {
      "phase_detected": "Description of the phase/section being implemented",
      "reasoning": "Why this decomposition — what's the strategy",
      "changes": [
        {
          "name": "kebab-case-name",
          "scope": "Detailed description of what to implement + test requirements",
          "complexity": "S|M|L",
          "change_type": "<one of the valid change types — see below>",
          "model": "opus|sonnet",
          "has_manual_tasks": false,
          "depends_on": ["other-change-name"],
          "roadmap_item": "The spec section this implements",
          "design_routes": ["/", "/kavek"],
          "spec_files": ["path/relative/to/spec-dir.md"],
          "requirements": ["REQ-DOMAIN-001"],
          "also_affects_reqs": ["REQ-CROSS-001"]
        }
      ],
      "deferred_requirements": [
        {
          "id": "REQ-DOMAIN-002",
          "reason": "Depends on auth system, planned for next phase"
        }
      ],
      "deferred_design_routes": [
        {
          "route": "/admin/settings",
          "reason": "Phase 2 scope, skipped for this run"
        }
      ],
      "source_items": [
        {
          "id": "SI-1",
          "text": "Description of the spec item",
          "change": "assigned-change-name-or-null"
        }
      ]
    }
    
    **Note:** `spec_files`, `requirements`, and `also_affects_reqs` are only required when working with a multi-file spec that has been digested (`set/orchestration/digest/` exists). For single-file specs, omit these fields.
    
    **Source items (single-file mode only):** When there is NO digest directory, generate a `source_items` array listing every identifiable spec item (feature, requirement, task, checkbox) with an assigned change name or `null` if intentionally excluded. Omit `source_items` entirely in digest mode (digest uses `requirements.json` instead).
    
    **Requirement accounting (digest mode only):** When a digest exists, every requirement in `set/orchestration/digest/requirements.json` MUST be accounted for. Either:
    - Assign it to a change via `requirements[]` or `also_affects_reqs[]`, OR
    - List it in `deferred_requirements[]` with a reason explaining why it is deferred (e.g., dependency on another phase, out of scope for this sprint, intentionally excluded)
    
    Silent omission of requirements — assigning neither to a change nor to `deferred_requirements` — is a planning error. `validate_plan()` will report unaccounted requirements as errors and block dispatch.
    

Read the full file on GitHub · 180 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 180 lines · 0 tokens per session scan B c72e386f8b34

Subscribe to this mod's changes

decompose is a skill published in the GitHub repository tatargabor/set-core (35 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,150 tokens. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.