spec

spec is a skill for Claude Code from william-london/ownframework-loop. It costs 30 tokens per session (1,761 once invoked), scanned B, original, Apache-2.0.

A controlled workflow for starting, checking, changing, or stopping a software task run. It prepares a bounded work packet and records which Git repository state the run uses.

In plain words
What is it for?
Use it to define a repository task, inspect its setup, and hand the work to an unattended process with optional debugging commands.
Why use it?
It prevents an agent from approving its own work, changing protected records, or quietly gaining authority to publish, deploy, or send something remotely.

Skill for Claude Code

Written for Claude Code: user-invocable in frontmatter. Also seen: reads .claude/ paths; installed under .agents/ (shared by several agents).

Part of the of-loop plugin — 5 skills, 2 agents, 2 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/william-london/ownframework-loop/of-loop-spec
Any agent
npx skills add william-london/ownframework-loop --skill of-loop-spec
Clone the repo
git clone --depth 1 https://github.com/william-london/ownframework-loop

Made for: Claude Code.

Or install of-loop, the plugin that ships this one along with the rest of its 5 skills, 2 agents, 2 hooks.

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 spec

README.md
[![agentmods](https://agentmods.dev/badge/skills/william-london/ownframework-loop/of-loop-spec.svg)](https://agentmods.dev/skills/william-london/ownframework-loop/of-loop-spec)
Your own site
<a href="https://agentmods.dev/skills/william-london/ownframework-loop/of-loop-spec"><img src="https://agentmods.dev/badge/skills/william-london/ownframework-loop/of-loop-spec.svg" alt="Measured on agentmods" height="20"></a>
Per session 30 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,761 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. Scan, not verified.
Origin original 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.00030 $0.01761
Opus 5 $0.00015 $0.00881
Sonnet 5 $0.00006 $0.00352
Haiku 4.5 $0.00003 $0.00176

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

Security

Grade B, and why

spec 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 2d ago.

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.

Claude settings (including `~/.claude/settings.json`); a specific model
.agents/skills/of-loop-spec/SKILL.md · 155 lines

How it starts

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

OwnFramework Loop - spec

This skill is a host adapter over the deterministic ofloop core.

Rules

  • Never approve your own packet.
  • Never write STATE.json, APPROVAL.json, REVIEW_VERDICT.json, event logs, or lock files directly.
  • Never manufacture the TTY confirmation token.
  • Never add push, merge, deploy, publish, send, payment, or unrelated remote authority.

New specification (normal flow)

  1. Confirm the working directory is the target Git repository.
  2. Resolve repository identity BEFORE creating the run:
    • inspect configured Git remotes;
    • decide the packet classification from actual current state, not intended future state;
    • local_only means no configured remote;
    • when a private GitHub review surface is part of the project, create/configure it, push the intended baseline, prove local/remote parity, and use github_private before ofloop spec new;
    • do not mint a local-only run and add a remote afterward.
  3. Inspect only enough repository context to draft an accurate bounded packet.
  4. Use ofloop spec new "" to create the run.
  5. Draft WORK_PACKET.md using the repository schema and packet conventions. Declare portable capabilities for host/tool needs instead of embedding machine paths or manually reconstructing tool-specific network topology (for example toolchain.python, package.uv, browser.playwright.chromium). Use runner_profile only as a trusted profile NAME when the mission needs an operator-commissioned model/effort policy; packets never carry raw Claude flags. Always write runner_profile explicitly in newly authored current packets. Use default only when the operator intentionally accepts no Loop model pin: the commissioned runner environment may select the model (for example through ANTHROPIC_MODEL), otherwise the provider default applies. The commissioned Claude runner does not reread interactive user/project/local Claude settings (including ~/.claude/settings.json); a specific model belongs in a trusted named runner profile, while provider endpoint/auth belongs in the private commissioned service environment. Use network_read_allowlist only for packet-specific extra read hosts not already supplied by a capability contract. Never add a broad wildcard, scheme, port, path, publish endpoint, daemon socket, or unrelated host. Before enqueue, run ofloop capabilities probe to inspect the host and ofloop capabilities preflight <repo> <capability>... for the exact requested set. If a requested ordinary capability is unavailable, provision or commission it on the host or revise the packet before execution; do not widen HOME/PATH or fall back to unsandboxed execution. Privileged container.docker / local.http-service additionally require the operator-owned canary commissioning flow.
  6. For PROGRAM packets with checkpoint-specific outcomes, keep the complete mission acceptance contract at top level and assign it deterministically with each checkpoint's acceptance_criterion_ids. If any checkpoint uses scoped AC ids, every checkpoint must declare a non-empty list and the union must cover every top-level AC id. Do not use not_applicable for future checkpoint criteria merely to satisfy coverage.
  7. Validate the packet shape with the supported validator.
  8. Return to the operator:

Read the full file on GitHub · 155 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. 2d ago Changed · +30 lines scan A → B 06e7c1aa5c58
  2. 5d ago First seen · 125 lines · 30 tokens per session scan A 378309c043fc

Subscribe to this mod's changes

spec is a skill published in the GitHub repository william-london/ownframework-loop (0 stars, last pushed 3d ago), licensed Apache-2.0. It adds 30 tokens to every session and 1,761 once invoked, about $0.0002 per session on Opus 5. 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-08-31.

Related

Other skills, from other repositories

printing-press-output-review

Internal sub-skill: agentic review of a printed CLI's sampled command output for plausibility issues that rule-based checks can't encode (substring-match relevance, format bugs, silent source drops, ranking failures). Invoked via the Skill tool by main printing-press SKILL.md (Phase 4.85) and printing-press-polish…

mvanhorn/cli-printing-press · 104 tokens

systemic-issue-triage

Trigger: new issue, bug report, triage, backlog, issue flood, community report, root cause, dead-end, blocked user. Attack issues by root class, never one-by-one; fixes must shrink the system, not grow it.

Gentleman-Programming/gentle-ai · 57 tokens

issue-root-resolution

Trigger: root audit, atacar la raíz, issue roots, backlog roots, mechanism map, deletion-driven fix, resolver issues de raíz, close outdated issues. Audit and resolve issue clusters by verified root cause.

Gentleman-Programming/gentle-ai · 45 tokens

rdd-defect-workflow

Trigger: RDD, receipt-driven development, review authority, receipt/lineage, correction/recovery, delivery gate/kill switch, bounded review defects. Guide work.

Gentleman-Programming/gentle-ai · 41 tokens

review-loop

Run the adversarial verification loop — implement, then hand the change to a fresh checker that did not write it, fix what it finds, and re-dispatch until APPROVE. Use before claiming any behavioural change is done, and on requests like "review loop", "adversarial review", "independent review", "get this verified"…

sangrokjung/claude-forge · 100 tokens

semgrep-rule-creator

Creates custom Semgrep rules for detecting security vulnerabilities, bug patterns, and code patterns. Use when writing Semgrep rules or building custom static analysis detections.

waybarrios/opencode-power-pack · 37 tokens