Borrowing it
Nothing to install: this file belongs to cedricziel/truenas-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/cedricziel/truenas-mcp/main/.claude/commands/opsx/propose.mdgit clone --depth 1 https://github.com/cedricziel/truenas-mcpWrote 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.
[](https://agentmods.dev/commands/cedricziel/truenas-mcp/propose)<a href="https://agentmods.dev/commands/cedricziel/truenas-mcp/propose"><img src="https://agentmods.dev/badge/commands/cedricziel/truenas-mcp/propose/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/cedricziel/truenas-mcp/propose"><img src="https://agentmods.dev/badge/commands/cedricziel/truenas-mcp/propose.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00021 | $0.01752 |
| Opus 5 | $0.00010 | $0.00876 |
| Sonnet 5 | $0.00004 | $0.00350 |
| Haiku 4.5 | $0.00002 | $0.00175 |
Grade A, and why
OPSX: Propose 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 9d 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.
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.
How it starts
The opening of the file, as written. The whole thing — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Propose a new change - create the change and generate all artifacts in one step.
I'll create a change with the artifacts your schema defines. With the default spec-driven schema that is:
- proposal.md (what & why)
specs/<capability>/spec.md(what the system must do - a delta, not the main spec)- design.md (how)
- tasks.md (implementation steps)
When ready to implement, run /opsx:apply
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, view). 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 argument after /opsx:propose is the change name (kebab-case), OR a description of what the user wants to build.
Steps
-
If no 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.
-
Create the change directory
openspec new change "<name>"This creates a scaffolded change in the planning home resolved by the CLI with
.openspec.yaml. -
Get the artifact build order
openspec status --change "<name>" --jsonParse the JSON to get:
applyRequires: array of artifact IDs needed before implementation (e.g.,["tasks"])artifacts: list of all artifacts, each with itsstatusand itsrequiresedges (the artifact IDs it directly depends on)planningHome,changeRoot,artifactPaths, andactionContext: path and scope context. Use these instead of assuming repo-local paths.
-
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 fileinstruction: Schema-specific guidance for this artifact typeskipped/warning: present when the change declares skip_specs and this artifact must NOT be created - stop and pick another artifactresolvedOutputPath: Resolved path or pattern to write the artifactdependencies: 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
instructionfield 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 atresolvedOutputPath - Otherwise create the artifact file using
templateas the structure and write it toresolvedOutputPath. IfresolvedOutputPathis a glob, followinstructionto choose the concrete file path - Apply
contextandrulesas 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
applyRequiresplus every artifact reachable from those by following therequiresedges instatus --json- walk them transitively (spec-driven closes over proposal, specs, design, tasks). Leave artifacts outside that set alone statusis file-existence only, so anapplyRequiresartifact readingdonedoes NOT mean its dependencies exist - writingtasks.mdearly markstasksdone whilespecswas never written. Use each artifact'srequiresedges, not itsstatus, to build the required set: adoneartifact still lists what it depends on- An artifact already reading
status: "skipped"is satisfied: the change declaresskip_specsin.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
statusalready reports itskipped, or when its owninstructionsays it is conditional: runopenspec instructions <artifact-id> --change "<name>" --jsonand skip only if itsinstructionfield marks it optional (e.g. "create only if..."). Spec-driven'sdesign.mdqualifies;specsqualifies only via theskippedstatus 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
blockedonly because you skipped a conditional dependency, write it anyway - Stop when every artifact in the required set is
done,skipped, or was deliberately skipped
- Get instructions:
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.
- 9d ago First seen · 120 lines · 21 tokens per session scan A dd7e385734a1
OPSX: Propose is a command published in the GitHub repository cedricziel/truenas-mcp (1 stars, last pushed 17d ago), licensed MIT. It adds 21 tokens to every session and 1,752 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
OPSX: Propose
Propose a new change - create it and generate all artifacts in one step.
OPSX: Apply
Implement tasks from an OpenSpec change (Experimental).
OPSX: Propose
Propose a new change - create it and generate all artifacts in one step.
OPSX: Apply
Implement tasks from an OpenSpec change (Experimental).
OPSX: Apply
Implement tasks from an OpenSpec change (Experimental).
OPSX: Propose
Propose a new change - create it and generate all artifacts in one step.