set-core: Skill for Claude Code

.claude/skills/openspec-ff-change/SKILL.md

openspec-ff-change is a skill for Claude Code from tatargabor/set-core. It costs 34 tokens per session (1,766 once invoked), scanned A, a copy of openspec-ff-change, MIT.

A skill for quickly creating all OpenSpec planning documents needed before implementation. OpenSpec is a system for recording a proposed software change and its implementation steps.

In plain words
What is it for?
Use it to fast-forward from a change name or build description to a ready-to-implement OpenSpec change.
Why use it?
It removes the slower, manual sequence of creating each artifact one at a time when the requested work is understood.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

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/openspec-ff-change/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 openspec-ff-change

README.md
[![agentmods](https://agentmods.dev/badge/skills/tatargabor/set-core/openspec-ff-change.svg)](https://agentmods.dev/skills/tatargabor/set-core/openspec-ff-change)
Your own site
<a href="https://agentmods.dev/skills/tatargabor/set-core/openspec-ff-change"><img src="https://agentmods.dev/badge/skills/tatargabor/set-core/openspec-ff-change.svg" alt="Measured on agentmods" height="20"></a>
Per session 34 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,766 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 92% copy Near-identical to another mod 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.00034 $0.01766
Opus 5 $0.00017 $0.00883
Sonnet 5 $0.00007 $0.00353
Haiku 4.5 $0.00003 $0.00177

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

Security

Grade A, and why

openspec-ff-change scanned grade A with 0 findings 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

92% identical to openspec-ff-change — 7 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.claude/skills/openspec-ff-change/SKILL.md · 114 lines

How it starts

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

Fast-forward through artifact creation - generate everything needed to start implementation in one go.

Store selection: If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run openspec store list --json to discover registered store ids, then pass --store <id> on the commands that read or write specs and changes (new change, status, instructions, list, show, validate, archive, doctor, context, schemas, view). Once selected, treat --store <id> as sticky for the rest of the workflow. Every unscoped example of those commands below is shorthand: before running it, append the flag. For example, run openspec status --change "<name>" --json --store "<id>", not the unscoped form shown below. Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local openspec/ root.

Input: The user's request should include a change name (kebab-case) OR a description of what they want to build.

Steps

  1. If no clear input provided, ask what they want to build

    Ask the user (open-ended, no preset options):

    "What change do you want to work on? Describe what you want to build or fix."

    From their description, derive a kebab-case name (e.g., "add user authentication" → add-user-auth).

    IMPORTANT: Do NOT proceed without understanding what the user wants to build.

  2. Create the change directory

    openspec new change "<name>"
    

    This creates a scaffolded change in the planning home resolved by the CLI.

  3. Get the artifact build order

    openspec status --change "<name>" --json
    

    Parse the JSON to get:

    • applyRequires: array of artifact IDs needed before implementation (e.g., ["tasks"])
    • artifacts: list of all artifacts, each with its status and its requires edges (the artifact IDs it directly depends on)
    • planningHome, changeRoot, artifactPaths, and actionContext: path and scope context. Use these instead of assuming repo-local paths.
  4. Create every artifact in the required set

    Use a todo list to track progress through the artifacts.

    Loop through artifacts in dependency order (artifacts with no pending dependencies first):

    a. For each artifact that is ready (dependencies satisfied):

    • Get instructions:
      openspec instructions <artifact-id> --change "<name>" --json
      
    • The instructions JSON includes:
      • context: Project background (constraints for you - do NOT include in output)
      • rules: Artifact-specific rules (constraints for you - do NOT include in output)
      • template: The structure to use for your output file
      • instruction: Schema-specific guidance for this artifact type
      • skipped/warning: present when the change declares skip_specs and this artifact must NOT be created - stop and pick another artifact
      • resolvedOutputPath: Resolved path or pattern to write the artifact
      • dependencies: Completed artifacts to read for context
    • Read any completed dependency files for context - always re-read them from disk, even if you saw them earlier in the conversation (the user may have edited them)
    • If the instruction field delegates creation to a specific skill or command, invoke it to produce the artifact instead of writing the file yourself, then verify the artifact file exists at resolvedOutputPath
    • Otherwise create the artifact file using template as the structure and write it to resolvedOutputPath. If resolvedOutputPath is a glob, follow instruction to choose the concrete file path
    • Apply context and rules as constraints - but do NOT copy them into the file
    • Show brief progress: "✓ Created "

    b. Continue until every artifact in the required set exists (not just apply.requires)

    • After creating each artifact, re-run openspec status --change "<name>" --json
    • The required set is applyRequires plus every artifact reachable from those by following the requires edges in status --json - walk them transitively (spec-driven closes over proposal, specs, design, tasks). Leave artifacts outside that set alone
    • status is file-existence only, so an applyRequires artifact reading done does NOT mean its dependencies exist - writing tasks.md early marks tasks done while specs was never written. Use each artifact's requires edges, not its status, to build the required set: a done artifact still lists what it depends on
    • An artifact already reading status: "skipped" is satisfied: the change declares skip_specs in .openspec.yaml, so its files must NOT exist. Never try to create one
    • Create every artifact in the required set that is missing, then re-check - creating one can unblock others
    • Skip one only when status already reports it skipped, or when its own instruction says it is conditional: run openspec instructions <artifact-id> --change "<name>" --json and skip only if its instruction field marks it optional (e.g. "create only if..."). Spec-driven's design.md qualifies; specs qualifies only via the skipped status above, never by your own judgment. Tell the user, and do not reconsider it
    • Dependencies are enablers, not gates: if a required artifact is still blocked only because you skipped a conditional dependency, write it anyway
    • Stop when every artifact in the required set is done, skipped, or was deliberately skipped

Read the full file on GitHub · 114 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 · 114 lines · 34 tokens per session scan A 4d78e1c7cd3e

Subscribe to this mod's changes

openspec-ff-change is a skill published in the GitHub repository tatargabor/set-core (35 stars, last pushed yesterday), licensed MIT. It adds 34 tokens to every session and 1,766 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 92% identical to openspec-ff-change, differing in 7 lines, and is treated as a copy.

Related

Other skills, from other repositories

atmos-migration

This skill helps you migrate a repository to Atmos. It covers native Terraform, Terraform Workspaces, Terramate, Terragrunt, Makefiles, Justfiles, and Taskfiles. It gives minimum-disruption paths, file-layout options, workspace mapping, task-to-command mapping, generatehcl/script decomposition, and the remote-state…

cloudposse/atmos · 96 tokens

atmos-modernization

Atmos Modernization: migrate deprecated or legacy Atmos patterns to current names, Native CI, Atmos Pro drift detection, dependencies.components, nametemplate, and declared secrets.

cloudposse/atmos · 36 tokens

atmos-init

Bootstrapping new Atmos projects with atmos init: built-in template catalog, differences from atmos scaffold generate, project record, and update-safe 3-way merge.

cloudposse/atmos · 35 tokens

atmos-workflows

Workflow automation: native step types, multi-step workflows, parallel/matrix/wait/container/emulator steps, when: conditions (CEL), require/assert preconditions, output steps, retries, dependencies, and cross-component orchestration.

cloudposse/atmos · 49 tokens

atmos-config

Atmos root configuration: atmos.yaml discovery, precedence, deep merging, basepath, imports, minimal bootstrap, and routing to narrower Atmos skills.

cloudposse/atmos · 31 tokens

atmos-imports

Atmos imports: local and remote stack imports, go-getter schemes, templated imports, import context, remote imports vs component source/vendoring, and private GitHub imports through github/sts.

cloudposse/atmos · 44 tokens