create-skill-autoresearch — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited create-skill-autoresearch (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
A factory for forging production-grade agent skills through gold-standard-driven autoresearch, multi-agent verification, and structured consensus.
The factory orchestrates 4 agent roles through 5 phases:
| Phase | What Happens | Agent Role |
|---|---|---|
| 1. Interview | Discover purpose, gold standards, scope | ORCHESTRATOR |
| 2. Research | Study domain materials, build dossier, propose rubric | RESEARCHER (N parallel) |
| 3. Draft | Design structure, generate SKILL.md, measure baseline | BUILDER |
| 4. Autoresearch | Iterate skill against gold standards (LLM-as-judge, or an objective real-world metric for procedural skills — see 3.4) | BUILDER + autoresearch skill |
| 5. Verify | Premortem, panel scoring, consensus, ship/iterate | PANEL (3 subagents) |
Key constraint: BUILDER and PANEL never share context. Panel receives only the skill output, gold standards, and rubric -- no bias from the building process.
This factory extends the official single-pass skill creators (Anthropic's Skills best-practices and skill-creator; Cursor's create-skill) rather than replacing them. It adds what a one-shot generator cannot: a research dossier, gold-standard benchmarking, an autonomous improvement loop, and independent multi-agent verification. The skills it produces follow the same official conventions -- see references/skill-authoring-best-practices.md.
The factory orchestrates these sibling skills at runtime: autoresearch (Phase 4 improvement loop), premortem (Phase 5 risk pass), and handoff (cross-session continuity); the Phase 5 panel/consensus design draws on llm-council. In this harness they are vendored under .agents/skills/. If you install this skill standalone, install those alongside it.
Discover what the user needs through structured questions. Do not assume -- ask.
What skill do you want to build? What problem does it solve?
>
Describe the domain, the target user (which agent will use this skill), and what "success" looks like when the skill is used correctly.
Record: SKILL_PURPOSE, DOMAIN, TARGET_USER, SUCCESS_CRITERIA.
Do you have examples of "what good looks like"?
>
Gold standards are the benchmark. They can be: - Input/output pairs: given this input, the skill should produce output like this - Reference artifacts: existing documents, code, or outputs that represent ideal quality - Previously solved problems: tasks that were completed successfully by humans - Quality reports: existing evaluations or benchmarks
>
Where are they? What format are they in? How many do you have?
Record: GOLD_STANDARD_SOURCE, GOLD_STANDARD_FORMAT, GOLD_STANDARD_COUNT.
Minimum: 3 gold standards. Fewer than 3 is a risk -- warn the user and suggest alternatives (create synthetic examples, find additional reference materials).
What materials should I study to understand this domain?
>
Examples: documentation, existing code, transcripts, design docs, reference implementations, specifications, style guides.
Record: STUDY_MATERIALS (list of paths/URLs).
Any constraints on the skill itself?
>
- Must it follow specific conventions? (e.g., existing team patterns) - Are there skills it should integrate with? - Any anti-patterns to avoid? - Target line count? (default: < 500 lines per create-skill conventions)
Record: CONSTRAINTS, INTEGRATION_SKILLS, ANTI_PATTERNS.
Is there an existing skill for this domain that we're upgrading?
>
If yes, that skill becomes a study material AND a baseline. The factory will research it, measure it against the rubric, then improve it -- not start from scratch.
If an existing skill is found, record EXISTING_SKILL path and set the factory mode to upgrade (baseline from existing) rather than greenfield (baseline from scratch).
Summarize all parameters in a table. Ask the user to confirm.
Once confirmed, create the build workspace at builds/<skill-name>/ with three ownership zones:
input/ -- where the user drops gold standards + study materials, in any structurework/ -- everything the factory generates: manifest.yaml, research/, evaluation/, experiments/, handoffs/output/<skill-name>/ -- the finished skill (SKILL.md + references/) in its own named dir, publish-readyDo not ask the user to hand-author a manifest. Scan whatever is in input/, classify each item as a gold standard (exemplar input/output pair or reference artifact) vs a study material, and write your derived index to work/manifest.yaml with train/validation/test tags. Present the derived manifest for the user to confirm or correct. See references/pipeline-phases.md for intake formats and the manifest schema.
Study the domain thoroughly before writing any skill code.
Cluster study materials by relatedness, then launch one explore subagent per cluster. Clustering heuristic:
Each subagent:
work/research/Naming: work/research/01-<topic>.md, work/research/02-<topic>.md, etc.
After all researchers complete, synthesize findings into work/research/00-synthesis.md:
Based on research, draft work/evaluation/rubric.yaml:
name: <skill-name>-rubric
dimensions:
- name: <dimension>
weight: <0.0-1.0>
scale: "1-10"
criteria: "<what this dimension measures>"
# ... 5-10 dimensions
target_score: 0.85
max_iterations: 20
plateau_window: 5Always include these universal dimensions (adjust weights per domain):
Add 3-6 domain-specific dimensions from the research synthesis.
Present the rubric to the user for review. Iterate until confirmed.
See references/rubric-templates.md for templates.
Design before writing. Write before measuring.
Create work/experiments/DESIGN.md with:
Before writing any skill code, challenge the design adversarially:
Present concerns to the user. Iterate until the design survives scrutiny.
Following the design and the official skill-authoring rules (see references/skill-authoring-best-practices.md), run this pre-flight checklist before writing -- these are hard constraints, not preferences:
name: <= 64 chars, lowercase/numbers/hyphens only, no reserved words `anthropic`/`claude`, gerund form preferreddescription: <= 1024 chars, third person, states both WHAT it does and WHEN to use itreferences/)Write the draft to output/<skill-name>/SKILL.md (reference files in output/<skill-name>/references/).
Create work/evaluation/evaluate.sh that:
executables), this means calling an LLM with the SKILL.md as a system prompt and the test case input as the user message. Use curl to an OpenAI-compatible API, or a language-specific SDK. Capture the LLM's output.
METRIC <dimension>=<score> lines to stdoutMETRIC overall_score=<weighted_average> as the primary metricSee self-test/evaluation/evaluate.sh in the agent-skills-harness repo for a complete reference implementation.
The LLM judge should:
Deterministic vs LLM-judge evaluation: Not every dimension needs an LLM judge. Prefer deterministic checks where possible:
Use LLM-as-judge only for dimensions that require subjective judgment (clarity, quality match, curation). Mix both in evaluate.sh: deterministic checks emit METRIC lines directly, LLM judges handle the rest. If no LLM API is available, fall back to deterministic-only scoring and log a warning.
Procedural / agentic skills (prefer this when it applies): Some skills don't generate an artifact in one shot — they instruct an agent to perform a multi-step task on a real artifact (migrate a framework version, refactor a module, scaffold infra, rebuild a repo). For these, the single-call "SKILL.md as system prompt + input as user message" model in 3.4 is the wrong harness. Evaluate them by execution against a real artifact with an objective real-world metric instead:
build/lint/typecheck/tests pass + a static "residual v3 markers = 0" grep.)METRIC lines. The artifact's own ground truth replaces the LLM judge — cheaper, deterministic, and far stronger signal than judging prose.git reset --hard <baseline> && git clean -fd + reinstall) is mandatory or scores drift. Vary the executor model (e.g. a smaller model) as a robustness check — if a smaller model + the skill still hits the target, the skill is robust.This makes the codemod/tool-first pattern natural too: have the skill run any deterministic tool (a codemod, a formatter, a generator) for the mechanical bulk first, and reserve the skill's prose for the judgment the tool can't do — the real-world metric then verifies the whole.
For multi-judge evaluation (recommended when budget allows):
work/evaluation/judges.yaml: judges:
- model: "<model-1>"
weight: 1.0
- model: "<model-2>"
weight: 1.0
aggregation: "mean"Optionally create work/evaluation/evaluate-checks.sh for correctness gates.
Run evaluate.sh on the test cases with the initial draft. Record baseline scores. This is experiment 0.
Report to the user:
Baseline established: overall_score = [value] Dimensions: [per-dimension breakdown]
Invoke the autoresearch skill to iterate the skill draft against the evaluation rubric.
Provide these parameters to the autoresearch skill. All paths are relative to the build workspace root (builds/<skill-name>/), which is the autoresearch working directory. Autoresearch session files (.md, .jsonl, .tsv, run.log) are created at the workspace root during the active session, then archived to work/experiments/ when the session ends or on handoff.
<skill-name> quality as measured by overall_score (LLM-as-judge against gold standards, or the objective real-world metric for procedural skills — see 3.4)./work/evaluation/evaluate.sh (relative to workspace root)overall_scorehigher_is_betteroutput/<skill-name>/SKILL.md, output/<skill-name>/references/*input/, work/max_iterations (default 20)work/evaluation/evaluate-checks.sh exists, create autoresearch.checks.sh at workspace root that calls it (autoresearch skill expects this name)If gold standards count >= 10:
If gold standards count 3-9:
Record the split in work/evaluation/data-split.yaml.
Cost awareness for large sets (100+ gold standards): Each LLM-as-judge call costs real money. With 70 training cases at ~$0.50/call, that's ~$35/experiment. Mitigate with a sampling strategy: evaluate against a random sample of training cases per experiment (e.g., 10-15), rotating the sample. Run the full training set only when validating kept experiments or at phase boundaries.
Overfitting detection: Run evaluate.sh against the validation set (not just training) adaptively:
If training score improves but validation score drops by more than 0.05, flag overfitting:
Overfitting warning: Training score [X] improving but validation score [Y] declining. Consider: generalizing recent changes, reverting to last validation-stable commit, or reviewing if rubric criteria are too narrow.
Log validation checks in autoresearch.jsonl with "type": "validation_check".
Overfitting detection for leave-one-out (< 10 gold standards): Since there is no fixed validation set, track per-case score variance. If variance across cases increases while the mean improves, the skill is specializing for some cases at the cost of others. Flag when any single case drops > 1.0 point while others improve.
The autoresearch skill handles the loop:
autoresearch.jsonl and results.tsvThe factory adds to the autoresearch ideas backlog (autoresearch.ideas.md):
If the autoresearch session exceeds context limits or the experiment budget:
work/handoffs/HANDOFF-<session>.mdwork/handoffs/state.yaml with structured resume state: phase: autoresearch # current phase (interview|research|draft|autoresearch|verify)
session: <N> # session counter (increments on each resume)
skill_name: <name> # the skill being built
best_score: <value> # best overall_score achieved
best_commit: <hash> # commit hash of best state
experiments_run: <count> # total experiments across all sessions
remaining_budget: <count> # experiments left in budget
validation_score: <value> # last validation set score (if applicable)
top_concerns: # panel feedback or known weaknesses
- <concern 1>
- <concern 2>
blocked_dimensions: [] # dimensions below threshold
last_updated: <ISO timestamp>state.yaml to resume from the correct phaseWhen the factory detects work/handoffs/state.yaml exists:
state.yaml to determine current phasework/handoffs/HANDOFF-*.md for rich contextautoresearch.jsonl for ASI history, continue loop with remaining budgetstate.yaml with new session numberIndependent verification by agents that did NOT participate in building. The context wall between BUILDER and PANEL is critical -- it prevents bias from the building process.
Invoke the premortem skill on the skill artifact. Feed identified risks into the panel evaluation as additional test scenarios.
Spawn 3 independent verifier subagents in parallel. Each receives ONLY:
They do NOT receive: research notes, experiment logs, builder context, or ASI.
Panel roles:
| Role | Focus | Bias |
|---|---|---|
| Verifier-A (Quality) | Correctness, completeness, clarity, spec adherence | Neutral |
| Verifier-B (Utility) | Real-world usability, edge cases, developer experience | Neutral |
| Devil's Advocate | Failure modes, hidden assumptions, missing constraints | Explicitly adversarial |
Each panel member scores every rubric dimension independently with:
Use a different model family for the panel when possible (e.g., if the builder used one model, use a different one for verifiers).
See references/pipeline-phases.md for panel prompt templates.
After collecting all 3 scoring outputs:
work/experiments/craft-decisions.mdESCALATE: <reason> for critical concerns the majority dismisses. This surfaces the concern to the user.See references/consensus-protocol.md for the full protocol, anti-patterns, and research basis.
| Final Score | Action |
|---|---|
| >= target_score AND no dimension blocked | SHIP -- copy skill to final location |
| >= target_score - 0.10 | SHIP WITH CAVEATS -- log concerns, proceed |
| < target_score - 0.10 | ITERATE -- feed panel feedback to autoresearch |
| Any dimension < 3/10 by majority | BLOCK -- address blocking concern first |
If ITERATE:
autoresearch.ideas.mdwork/experiments/craft-decisions.mdEach build lives in one self-contained folder, builds/<skill-name>/, with three zones:
builds/<skill-name>/
input/ # HUMAN: gold standards + study materials (any structure)
work/ # FACTORY: process artifacts (not shipped)
manifest.yaml # derived gold-standard index
research/ # study notes and dossier
evaluation/ # rubric.yaml, evaluate.sh, judges.yaml, data-split.yaml
experiments/ # results.tsv, autoresearch.jsonl, run.log, DESIGN.md, craft-decisions.md
handoffs/ # cross-session context
output/ # FACTORY: the finished, publish-ready skill
<skill-name>/ # the skill in its own named dir
SKILL.md
references/ # if needed
scripts/ # if needed (NOT evaluation scripts)
assets/ # if neededOnly output/ ships. To publish: copy builds/<skill-name>/output/<skill-name>/ straight into a skills repo's skills/ directory.
Write a handoff when any of these occur:
Each handoff produces:
work/handoffs/state.yaml -- structured state for automatic resumework/handoffs/HANDOFF-<label>.md -- rich context for human readabilityTo resume: read state.yaml, determine current phase, load relevant context, continue.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.