issue-driven-workflow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited issue-driven-workflow (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
A bulleted imperative like {match} tells the agent to never reveal, disclose, or mention something to the user. Used adversarially it can instruct the agent to hide its tool calls or lie about what it did — stripping the transparency a user relies on to trust the agent.
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.
The plan and Issue CSV are a work amplifier. Front-load the thinking so the agent has a full plate of actionable work to execute autonomously. More rows means more useful work per run.
The quality bar: every CSV row is completable, testable, and markable DONE without further clarification.
plan → issues → implement → test → review
Commands below write <skill_dir> for the absolute path of the directory containing this SKILL.md. Your harness usually reports that path when it loads the skill. If it does not, use this SKILL.md's own location. Substitute it before running.
Run the scripts from inside the target project. They resolve the project root from the working directory (nearest .git, then AGENTS.md), and artifacts land at that root: plans in plans/, issue CSVs in issues/.
assets/_template.md and choose a complexity tier. python3 <skill_dir>/scripts/create_plan.py \
--task "<title>" --complexity <simple|medium|complex> --body-file <tmpfile>A single-quoted heredoc piped to stdin also works. Use --template only to start from the blank scaffold. The script prints the plan path. Keep it for the next step.
references/issue-csv-spec.md, order rows by dependency chain, and set Dependencies so execution order is unambiguous. python3 <skill_dir>/scripts/create_issues.py --plan <plan-path> --rows-file <tmpfile>The script derives issues/<timestamp>-<slug>.csv from the plan filename, validates every row, and writes nothing on any error.
The CSV is your execution state. Read it and update it through the scripts, and keep driving forward. Never string-edit the CSV: quoting rules and repeated status cells make hand edits corruption-prone. If validation reports the file itself as broken, rebuild it instead: correct the drafted rows and rerun create_issues.py with --overwrite.
python3 <skill_dir>/scripts/update_issue.py <csv> --nextpython3 <skill_dir>/scripts/update_issue.py <csv> --id A2 --dev-status DOINGAcceptance is met and Test_Method passes, set --id A2 --dev-status DONE.--id A2 --review-status DONE. The script rejects incoherent transitions, for example review marked DONE before implementation.--next and keep going.--id <ID> --regression-status DONE per row.If a row is too large, split it. If a row fails, fix it or flag it with --note. If in a git repo, commit at natural boundaries.
| Script | Purpose | Key flags |
|---|---|---|
create_plan.py | Write a plan file with frontmatter under plans/ | --task, --complexity, --body-file, --template, --overwrite |
create_issues.py | Write the paired Issue CSV, fully validated | --plan, --rows-file, --overwrite |
update_issue.py | Row-addressable status and note updates, plus queries | <csv>, --id, --dev-status, --review-status, --regression-status, --note, --next, --show, --json |
validate_issues_csv.py | Validate schema and semantics, all errors in one run | <csv> |
list_plans.py | List existing plans | --query, --json |
read_plan_frontmatter.py | Read one plan's frontmatter | <plan-path>, --json |
Every script prints usage with --help.
Plans: plans/YYYY-MM-DD_HH-mm-ss-<slug>.md. Issue CSVs: issues/YYYY-MM-DD_HH-mm-ss-<slug>.csv with the same timestamp and slug, enforced by create_issues.py. A project with an existing plan/ directory from older runs keeps using it. Commit plans/ and issues/ in the consuming repo when tracking should survive sessions or hand off between agents. Gitignore them for scratch work.
Test_Method~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.