# Dev Workflows **Agent workflows as `SKILL.md` files for frontend, backend, architecture, security review and READMEs. Every phase ends in a verification step, not a claim.** ![License](https://img.shields.io/badge/license-MIT-blue) ![Workflows](https://img.shields.io/badge/workflows-5-informational) ![Vendored skills](https://img.shields.io/badge/vendored%20skills-10-informational) [Workflows](#workflows) · [Install](#install) · [How it works](#how-it-works) · [QA harness](#the-qa-harness) · [Known limits](#known-limits) **[Ler em português](README.pt-BR.md)**
> [!NOTE] > **Project state:** five commits between 2026-08-19 (workflows, bilingual README, > `wf-readme`) and 2026-08-24 (ten security skills vendored under `skills/`). Every > workflow declares `version: 1.0.0`. The workflow bodies are written in Portuguese; > this README is in English and [README.pt-BR.md](README.pt-BR.md) is the Portuguese copy. > [!IMPORTANT] > **Only `wf-security-review` works out of the box.** Its skills are vendored in > [`skills/`](skills/NOTICE.md). The frontend, backend, architecture and README > workflows load third-party skills that are **not** in this repository and must be > installed separately ([list below](#skills-the-workflows-load)). The security > workflow also needs network access: it must query OSV.dev, the GitHub Advisory DB > and NVD, and stamp the date on the report. ## Workflows | Workflow | File | Phases | Covers | |---|---|---|---| | **Frontend / UI** | [`wf-frontend.md`](workflows/wf-frontend.md) | DESIGN, BUILD, REVIEW | Design direction before code, anti-AI-slop, React performance, visual QA for PDFs | | **Backend / API** | [`wf-backend.md`](workflows/wf-backend.md) | PLAN, BUILD, SECURITY, TEST + BUG HUNT | Contract before handler, safe defaults, OWASP audit, tests and adversarial bug hunt | | **Architecture** | [`wf-architecture.md`](workflows/wf-architecture.md) | REQUIREMENTS, DESIGN, DOCS, REVIEW | Measurable requirements, C4 diagrams, ADRs, threat modeling | | **Security review** | [`wf-security-review.md`](workflows/wf-security-review.md) | SCOPE, HUNT, CONSULT, CODE REVIEW, REPORT + GATE | Front and back code review, known CVEs and a live lookup of new ones | | **README** | [`wf-readme.md`](workflows/wf-readme.md) | SCAN, CLASSIFY, AUDIT or DRAFT, GENERATE, VERIFY + VALIDATE | Create, audit or rewrite READMEs grounded in real repo facts | Each file is a standard `SKILL.md`: the `description` in the frontmatter is the trigger, so the workflow loads when the agent's context matches it. Why they exist: agents generate code well and admit ignorance badly. Each workflow forces the agent to prove the work at every phase: - **Verification steps:** run the build, run the tests, hit the API, consult the registry. - **Acceptance criteria:** checkbox gates that must be marked before a phase closes. - **Hard rules:** "never merge with a red build", "never claim 'no CVE' without querying OSV.dev". - **A QA harness:** a scorecard for workflow quality, plus meta-tests that corrupt the harness to prove it catches regressions. ## Install ```bash # 1. Copy the workflows into your agent's skills directory # Hermes Agent cp workflows/*.md ~/.hermes/skills/software-development/ # Claude Code: each skill needs its own directory (a loose .md is not loaded) mkdir -p ~/.claude/skills for f in workflows/*.md; do name=$(basename "$f" .md) mkdir -p "$HOME/.claude/skills/$name" cp "$f" "$HOME/.claude/skills/$name/SKILL.md" done # 2. Security review: the supporting skills are already vendored in skills/. # Hermes: cp -r skills/* ~/.hermes/skills/ # Claude Code: copy each skills// directory to ~/.claude/skills// # (the SKILL.md must sit inside its own directory, as in step 1). # 3. Use it # "review this PR for security" -> wf-security-review loads # "build a new page" -> wf-frontend loads ``` The remaining skills install through `npx skills` (agentskills.io format), for example: ```bash npx skills add anthropics/skills --skill frontend-design npx skills add vercel-labs/agent-skills --skill vercel-react-best-practices npx skills add conorbronsdon/avoid-ai-writing npx skills add https://github.com/pbakaus/impeccable --skill impeccable ``` > [!WARNING] > **Install layout matters.** Claude Code ignores a loose `.md`; it needs > `/SKILL.md`. The QA harness has the same requirement: it reads > `~/.hermes/skills/software-development//SKILL.md`, so the flat `cp` > used for Hermes above is not enough to run it (see [the harness](#the-qa-harness)). ## How it works The security workflow is built on one fact: a model's knowledge of CVEs stops at its training date, so "no vulnerabilities" from memory is a guess. ```mermaid flowchart LR A["Code / diff"] --> B["1 SCOPE"] B --> C["2 HUNT
known CVEs"] C --> D["3 CONSULT
OSV.dev, GitHub Advisory, NVD"] D --> E["4 CODE REVIEW
OWASP Top 10 + ASVS"] E --> F["5 REPORT + GATE
sources and date stamped"] ``` A review with no source and no date is expired on arrival. ### Skills the workflows load
Vendored in skills/ (security review) Exact origin, commit and license of each copy are in [`skills/NOTICE.md`](skills/NOTICE.md). The copies are 1:1 with the origin; CC-BY-4.0 requires attribution, kept in that file. | Skill | What it does | Origin | License | |---|---|---|---| | `safedeps` | Queries OSV.dev live: CVE, severity and fixed version for a `package@version` (script `check_deps.py`) | [Jeneidi/safedeps](https://github.com/Jeneidi/safedeps) | MIT | | `sca-audit` | Dependency supply-chain audit with reachability analysis and CWE mapping | [OWASP/secure-agent-playbook](https://github.com/OWASP/secure-agent-playbook) | CC-BY-4.0 | | `code-review-security` | Systematic security code review mapped to OWASP Top 10 + ASVS | OWASP/secure-agent-playbook | CC-BY-4.0 | | `secrets-scan` | Hardcoded credentials and API keys in code and git history | OWASP/secure-agent-playbook | CC-BY-4.0 | | `api-security-review` | API review against OWASP API Security Top 10 | OWASP/secure-agent-playbook | CC-BY-4.0 | | `web-security-review` | Web app review against OWASP Top 10 | OWASP/secure-agent-playbook | CC-BY-4.0 | | `cve-triage` | Prioritizes CVEs with CVSS 4.0, EPSS and CISA KEV | [UnitOneAI/SecuritySkills](https://github.com/UnitOneAI/SecuritySkills) | MIT | | `patch-prioritization` | Decides remediation order | UnitOneAI/SecuritySkills | MIT | | `dependency-scanning` | Dependency tree scanning | UnitOneAI/SecuritySkills | MIT | | `hermaguard` | Adversarial review: static pre-scan plus 3 specialist agents (edge cases, attack, blast radius) | [Sahil-SS9/hermaguard](https://github.com/Sahil-SS9/hermaguard) | MIT |
Not vendored (install separately) Full inventory and install steps: [`docs/SKILLS.md`](docs/SKILLS.md). | Workflow | Skill | Origin | |---|---|---| | Frontend | `frontend-design` | [anthropics/skills](https://github.com/anthropics/skills) | | Frontend | `web-design` | [KAOPU-XiaoPu/web-design](https://github.com/KAOPU-XiaoPu/web-design) | | Frontend | `vercel-react-best-practices`, `vercel-composition-patterns` | [vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills) | | Frontend | `animate` | [emilkowalski/skill](https://github.com/emilkowalski/skill) | | Frontend | `impeccable` | [pbakaus/impeccable](https://github.com/pbakaus/impeccable) | | Frontend | `avoid-ai-writing` | [conorbronsdon/avoid-ai-writing](https://github.com/conorbronsdon/avoid-ai-writing) | | Frontend | `anti-ai-slop` | local skill, not published here | | Backend | `secure-coding` | [securityreviewai/secure-coding-skill](https://github.com/securityreviewai/secure-coding-skill) | | Backend | `bola-detector`, `auth-rbac-scaffold`, `injection-checker`, `openapi-hardener`, `api-security-review`, `security-test-generator` | [apisec-inc/apisec-skills](https://github.com/apisec-inc/apisec-skills) | | Architecture | `system-design`, `c4-architecture`, `isaqb-architecture-governance`, `secure-architecture-governance` | [Kotivskyi/architecture-governance-skills](https://github.com/Kotivskyi/architecture-governance-skills) | | README | `readme-crafter` | [linhai0872/readme-crafter-skill](https://github.com/linhai0872/readme-crafter-skill) | | README | `good-readme` | [adewale/good-readme](https://github.com/adewale/good-readme) | | README | `curating-readme` | [liang-senbei/curating-readme](https://github.com/liang-senbei/curating-readme) |
## The QA harness The [`qa/`](qa) directory keeps the workflows honest: ```bash cd qa python3 wf_quality_harness.py # score each workflow on 30+ criteria python3 test_quality.py # gates: no regression, referenced skills exist, every phase verified python3 test_tests.py # meta-tests: corrupt harness/workflows, confirm the score drops ``` The harness scores `wf-frontend`, `wf-backend`, `wf-architecture` and `wf-security-review` (not `wf-readme`) by static criteria extracted from each `SKILL.md`: structure, numbered steps per phase, verification verbs, referenced skills that exist, and AI-isms density. The meta-tests are the useful part: they deliberately break the harness and a workflow, then confirm the score changes. If it did not, the detector would be useless.
Measured scores Final scores per workflow come from [`qa/snapshots/baseline-final.json`](qa/snapshots/baseline-final.json). The "before" values come from earlier harness runs; only the final snapshot is versioned. | Workflow | Before | Final | Gain | |---|---|---|---| | `wf-frontend` | 201.0 | 385.5 | +92% | | `wf-backend` | 215.0 | 424.0 | +97% | | `wf-architecture` | 199.9 | 413.7 | +107% | | `wf-security-review` | 332.0 | 390.0 | +17% | | Sum of the first three | 615.9 | 1223.2 | +98.6% | | Sum of the four | 947.9 | 1613.2 | +70.2% | The ruler also got stricter over time (13 criteria at first, 30+ later), so the before/after comparison uses the final ruler on both sides. The numeric "2x" target was not forced: inflating the score to hit it would be gaming the metric.
## Known limits - The harness reads installed copies from `~/.hermes/skills/software-development//SKILL.md` (hardcoded `SKILLS_DIR`), not the files in `workflows/`. Install in the directory layout first, or it reports `SKILL.md não encontrado`. - Two different skills share the name `api-security-review`: the vendored OWASP one (`skills/`) and the apisec-inc one used by the backend workflow. Installing both into the same directory makes one overwrite the other. - There is no root CI workflow. `skills/hermaguard/.github/workflows/ci.yml` belongs to the vendored hermaguard and does not run from this repository. - The `wf-readme` workflow is not covered by the harness. ## Contributing Open an issue first, then a PR. The rules are the ones the workflows enforce: claims trace back to repo facts, every phase has a verification step, and docs avoid AI-isms. Run the three `qa/` commands above before a PR; if you change scoring, update `qa/snapshots/baseline-final.json`. Details in [`CONTRIBUTING.md`](CONTRIBUTING.md). ## License [MIT](LICENSE), (c) 2026 Evandro Fonseca Junior. Vendored skills keep their own licenses ([`skills/NOTICE.md`](skills/NOTICE.md)).