spectra-propose-e063ed — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited spectra-propose-e063ed (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create a complete Spectra change proposal — from requirement to validated artifacts — in a single workflow.
Input: The argument after $spectra-propose is the requirement description. Examples:
$spectra-propose add dark mode$spectra-propose fix the login page crash$spectra-propose improve search performanceIf no argument is provided, the workflow will extract requirements from conversation context or ask.
Prerequisites: This skill requires the spectra CLI. If any spectra command fails with "command not found" or similar, report the error and STOP.
Steps
a. Argument provided (e.g., "add dark mode") → use it as the requirement description, skip to deriving the change name below.
b. Plan file available:
<name>.md)plan_title (H1 heading) → use as requirement descriptionplan_context (Context section) → use as proposal Why/Motivation contentplan_stages (numbered implementation stages) → use for artifact creationplan_files (all file paths mentioned) → use for Impact sectionc. Conversation context → attempt to extract requirements from conversation history
From the resolved description, derive a kebab-case change name (e.g., "add dark mode" → add-dark-mode).
IMPORTANT: Do NOT proceed without understanding what the user wants to build.
Based on the requirement, classify the change into one of three types:
| Type | When to use |
|---|---|
| Feature | New functionality, new capabilities |
| Bug Fix | Fixing existing behavior, resolving errors |
| Refactor | Architecture improvements, performance optimization, UI adjustments |
This determines the proposal template format in step 5.
Before creating the change, check if any existing specs overlap:
openspec/specs/*/spec.mdIMPORTANT:
spectra new change "<name>" --agent codexIf a change with that name already exists, suggest continuing the existing change instead of creating a new one.
Get instructions:
spectra instructions proposal --change "<name>" --jsonWrite the proposal file using the template from instructions, with the following format based on change type:
## Why
<!-- Why this functionality is needed -->
## What Changes
<!-- What will be different -->
## Non-Goals (optional)
<!-- Scope exclusions and rejected approaches. Required when design.md is skipped. -->
## Capabilities
### New Capabilities
- `<capability-name>`: <brief description>
### Modified Capabilities
(none)
## Impact
- Affected specs: <new or modified capabilities>
- Affected code: <list of affected files> ## Problem
<!-- Current broken behavior -->
## Root Cause
<!-- Why it happens -->
## Proposed Solution
<!-- How to fix -->
## Non-Goals (optional)
<!-- Scope exclusions and rejected approaches. Required when design.md is skipped. -->
## Success Criteria
<!-- Expected behavior after fix, verifiable conditions -->
## Impact
- Affected code: <list of affected files> ## Summary
<!-- One sentence description -->
## Motivation
<!-- Why this is needed -->
## Proposed Solution
<!-- How to do it -->
## Non-Goals (optional)
<!-- Scope exclusions and rejected approaches. Required when design.md is skipped. -->
## Alternatives Considered (optional)
<!-- Other approaches considered and why not -->
## Impact
- Affected specs: <affected capabilities>
- Affected code: <list of affected files> spectra status --change "<name>" --jsonParse the JSON to get:
applyRequires: array of artifact IDs needed before implementationartifacts: list of all artifacts with their status and dependenciesLoop through artifacts in dependency order (skip proposal since it's already done):
a. For each artifact that is `ready` (dependencies satisfied):
applyRequires artifact (i.e., removing it would not block reaching apply), it is optional. Get its instructions and read the instruction field. If the instruction contains conditional criteria (e.g., "create only if any apply"), evaluate whether any criteria apply to this change based on the proposal content. If none apply, skip the artifact and show: "⊘ Skipped <artifact-id> (not needed for this change)". Then continue to the next artifact. spectra instructions <artifact-id> --change "<name>" --jsoncontext: 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 guidanceoutputPath: Where to write the artifactdependencies: Completed artifacts to read for contextlocale: The language to write the artifact in (e.g., "Japanese (日本語)"). If present, you MUST write the artifact content in this language. Exception: spec files (specs/\*_/_.md) MUST always be written in English regardless of locale, because they use normative language (SHALL/MUST).template as the structurecontext and rules as constraints - but do NOT copy them into the fileb. Continue until all `applyRequires` artifacts are complete
spectra status --change "<name>" --jsonapplyRequires has status: "done"applyRequires artifacts are donec. If an artifact requires user input (unclear context):
After creating all artifacts, scan them manually. Fix issues inline, then proceed to the CLI analyzer.
Check 1: No Placeholders
These patterns are artifact failures — fix each one before proceeding:
Check 2: Internal Consistency
Check 3: Scope Check
Check 4: Ambiguity Check
| What You're Thinking | What You Should Do |
|---|---|
| "The requirements are clear enough, no need for discuss" | Fine if true — but check you're not skipping because you're lazy |
| "This artifact isn't needed for this change" | Check applyRequires — if it's in the dependency chain, create it |
| "The spec doesn't need scenarios, the requirement is obvious" | Obvious to you now. Write scenarios for the implementer who doesn't have your context |
| "I'll keep the design brief, code will be self-explanatory" | Design exists so implementers don't reverse-engineer intent. Be specific |
| "This is a small change, skip the scope check" | Small changes touching 5 subsystems aren't small. Check |
| "The placeholder is fine for now, I'll fill it in later" | There is no "later" — implementation is next. Fill it in now |
spectra analyze <change-name> --jsona. Show: "Found N issue(s), fixing... (attempt M/2)" b. Fix each finding in the affected artifact c. Re-run spectra analyze <change-name> --json d. Repeat up to 2 total iterations
spectra validate "<name>"If validation fails, fix errors and re-validate.
Show summary:
Use AskUserQuestion tool to ask what to do next. This ensures the workflow stops even when auto-accept is enabled. Provide exactly these options:
spectra park "<name>" to park the change, then inform the user they can run $spectra-apply <change-name> when ready (which will auto-unpark).$spectra-apply <change-name> to start implementation.If AskUserQuestion tool is not available, execute spectra park "<name>" and inform the user to run $spectra-apply <change-name> when ready. Then STOP — do not continue.
After the user responds, if they chose "Park", execute spectra park "<name>" and the workflow is OVER. If they chose "Apply", invoke $spectra-apply <change-name> to begin implementation.
Artifact Creation Guidelines
instruction field from spectra instructions for each artifact typetemplate as the structure for your output file - fill in its sectionscontext and rules are constraints for YOU, not content for the file<context>, <rules>, <project_context> blocks into the artifact.spectra.yaml. If parallel_tasks: true is set, add [P] markers to tasks that can be executed in parallel. Format: - [ ] [P] Task description. A task qualifies for [P] if it targets different files from other pending tasks AND has no dependency on incomplete tasks in the same group. When parallel_tasks is not enabled, do NOT add [P] markers.Guardrails
applyRequires dependency chain) may be skipped if their inclusion criteria don't apply.$spectra-apply — this workflow ends after artifact creation. The user decides when to start implementation~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.