All notable changes to this skill are documented here. The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
write-paper1.0.0: plan, draft, revise, and polish scientific papers (ML / CV / graphics conference style). Modes: Plan, Draft, Revise, Final push, Polish. Hard rule: never invent results, numbers, or citations ([TODO]placeholders instead).references/pre-writing-questions.md— pre-writing questions, Goal → Problem → Solution story, the nugget.references/section-guides.md— title, acronym, abstract skeleton, teaser, introduction, method/equations, experiments, related work, figures, conclusion, supplementary/video.references/style-rules.md— line-level lint (concision, voice, tense, consistency, citations).references/latex-and-submission-checklist.md— LaTeX, bibliography, layout, proofreading, supplementary checklist.examples/sample-paper-brief.md— sample Step 1 paper brief.- Based on Michael J. Black's essay Writing a good scientific paper (paraphrased).
security-reviewer:JS-CMDInow flagsexec(<variable>)/child_process.exec(<variable>)(previously only string concatenation and template literals);RegExp.exec()is not flagged.
security-reviewer:scripts/test_scanners.pyandexamples/fixtures/{fastapi,nextjs}— regression test asserting the expected rules fire.
security-reviewer: code-first scanning, stdlib Python only (no external tools required).scripts/plan_scan.py— detects Next.js / FastAPI / generic projects (monorepo-aware, manifest + content sniffing), scopes files by--diff <base-ref>or--files, maps attack-surface hotspots and assigns every vulnerability category a coverage status. Writesscan-plan.json.scripts/run_scan.py— runs the scanners selected by the plan and writesfindings.json(stableF-<hash>ids, verdictuntriaged). Optionalnpm audit/pip-auditwhen installed;--no-depsskips them.scripts/scan_python.py—ast-based FastAPI/Python rules: routes without auth dependency (route / router /include_router/ app level), SQLi, shell injection, eval, pickle/yaml, JWT verification, CORS, debug, TLS, weak hash/random, secrets in logs, HTML responses.scripts/scan_js.py— Next.js/JS/TS rules: Server Actions and route handlers without auth, raw SQL, shell, eval, XSS sinks,NEXT_PUBLIC_secrets,jwt.decode, CORS, TLS, open redirect, SSRF.scripts/scan_secrets.py— known key formats, secret assignments, tracked.envfiles; values masked in output.references/profiles/{nextjs,fastapi,generic}.json,references/scanners.json,references/scan_profiles.md,references/scan_rules.md. Per-repo overrides via<target>/.security-reviewer.json.
security-reviewer: finding claims and independent verification (adapted from cloudflare/security-audit-skill), documented inreferences/verification.md.- Every high/medium
confirmed/needs_validationfinding states Attacker, Entry Point, Boundary, Impact; findings without a concrete attacker and impact are rejected. - Step 2c: each high/medium finding to be confirmed goes to a fresh verifier sub-agent that tries to disprove it (
upheld→ confirmed,disproved→ rejected,unresolved→ needs_validation). Fallback without delegation: separate pass markedupheld (self).
- Every high/medium
notes/security-reviewer-scan-engine.md— research on alibaba/open-code-review and cloudflare/security-audit-skill, and why the engine is built-in Python instead of Opengrep/Semgrep.
security-reviewer1.1.0 → 1.2.0: Step 1 runsplan_scan.py+run_scan.py; Step 2 starts with triage offindings.json(confirmed/rejected/needs_validation), then a manual audit scoped by hotspots and coverage status. Report template adds## Automated Scan Triage.validate_security_review.pyfails when a high/medium finding infindings.jsonhas no verdict in the report, aconfirmedrow lacksVerifier = upheld, aPASSreport contains a confirmed high/medium finding, aFAILreport lists no actionable finding, or an actionable finding misses a claim field or anupheldverification.
wiki-manager:wiki_tool.py new <slug>(next freeNNN-folder),status <id> <draft|in_progress|completed>,log "<Agent>" "<msg>"(append towiki/log.md).COMPLETE/LOG/NEW_MODULEoperations documented in SKILL.md.user-designer:scripts/validate_html_mockup.py(skeleton, hardcoded hex, external resources, a11y, required states);validate_design.py --require-approvedgate;validate_plan_mockup.pynow fails when aTC-*case indesign.mdis not mapped inplan.md.requirement-analyzer:## Open Questionssection (required byvalidate_requirement.py) and the Success-vs-Acceptance Criteria note.
- All 6 RAD skills bumped
1.0.0 → 1.1.0. requirement.mdanddesign.mdtemplates default tostatus: draft; they becomeapprovedonly after the user confirms.user-designer: design approval step (status + Approved UI Summary) beforePLAN;PLANandconstructorrefuse an unapproved design; mockup step must also readrequirement.md/design.mdof semantically related modules.constructor: readsSYSTEM.md(andDESIGN.mdfor UI tasks); stops aftermax_review_iterations.quality-reviewer/security-reviewer: escalate to the user whenmax_review_iterationsis exhausted; module markedcompletedafter user confirmation; decisions logged.- Registry
descriptionminimum is now 100 characters (was 5 words);lintenforces it.
wiki_tool.py syncno longer overwritesproject,max_review_iterations,versionor hand-written descriptions.wiki_tool.pyescapes YAML strings (a"in a description no longer corruptsregistry.yaml) and registers.htmlmockups.Goals/Target Usersextraction accepts both bold and plain forms; skill template aligned withtemplates.md.
review-skill— structural linter, Skill Smells, Deployment Readiness, Eval split, description length check, ALL-CAPS rule, license field.- Added
scripts/validate_skill.py: stdlib-only Python linter for the mechanical checks (frontmatter schema, semver, kebab-case name, description length, body word count, credential assignment detection, absolute path detection, ALL-CAPS rationale check, script docstring presence). Matches repo's hand-rolled YAML parser convention. - Added Step 0 "Mechanical Linter" to Review Workflow: agent must run
validate_skill.pybefore manual review. - Added "Skill Smells" section with 6 anti-patterns from Agent Skills cheatsheet (Day3).
- Added "Deployment Readiness" gate section (7 aspirational deployment checks).
- Split "Testability & Verification" into 4 failure modes: Trigger, Execution, Regression, Token Budget.
- Added description length constraint (≤1024 chars YAML, ~50 words target) to Metadata dimension.
- Added ALL-CAPS imperative rationale check to Instruction Clarity dimension.
- Added
license: MITto frontmatter. - Added
--jsonflag tovalidate_skill.pyfor machine-readable output. - Bumped
version: 1.3.0 → 1.4.0.
- Added
validate_skill.py: fixed secret detection (was too aggressive, flagged plain-text words like "Token" in prose); fixed--jsonflag parsing; now skips matches inside backtick code spans for ALL-CAPS check.
read-paperskill — review-skill Medium fixes 2-5 + docling migration.- SKILL.md fix (2): replaced vague "Pass 4 is for the parts that earn their reading time" with four agent-checkable completion criteria (one-sentence contribution, 3-sentence framing, 5-minute explanation, answer to specific question).
- SKILL.md fix (3): split the old combined "user's attention / what they can apply" question into two question-aligned signals that map to
MEMORY.mdcalibration signals B (active focus) and C (applicable methods). - SKILL.md fix (4): added explicit hallucination anti-pattern with a concrete Transformer-example failure mode ("drawing a Mermaid block that resembles a Transformer encoder/decoder without naming the paper's actual modules, then claiming it represents Figure 1").
- SKILL.md fix (5): named the paper in the example file description ("Attention Is All You Need", Vaswani et al., 2017) so it's clear what the example covers.
- Tool portability: swapped
PyMuPDFfordoclingin the Tool Capability Reference and the Quick-start recipe to match the new primary extraction tool.
references/paper-sources.md— full rewrite around docling.- Replaced the
PyMuPDFextraction approach withdocling(Python API + CLI) as the primary PDF → Markdown tool. Docling preserves layout, handles scanned PDFs via built-in OCR, and outputs structured Markdown suited for downstream PACES analysis. - Updated install instructions (
pip install docling,uv add docling,docling[mac_intel]), replaced PyMuPDF-specific pitfalls with docling-relevant ones (first-run ML-model download, sandboxedpip, large paper slicing), and updated the Quick routing table. - Reference: docling quickstart.
- Replaced the
read-paperskill — slop tightening pass (via Antigravity CLI).- Cut 21 instances of filler, repetition, mechanical phrasing, and inverted pitfalls across all 5 files (SKILL.md, references/, examples/).
- Critical fix: inverted pitfall in
memory-cross-reference.md(was listing "Skipping basics" as a pitfall title instead of "Re-explaining basics the user already knows"). - Stripped verbatim copy-pasted Python script block and duplicated
grepslicing recipes frompaper-sources.md. - Removed scratch-note residue (
> MEMORY.md is your knowledge in the domain/fields...quote) frommemory-cross-reference.md. - Reframed
MEMORY.mdmeaning to match original notes intent: user's domain knowledge profile (existing expertise / active focus / applicable methods), not a generic working-memory notebook. - Tightened worked examples and corrected minor grammar (
de-facto→de facto).
- File line counts grew in some places (clarification sub-headings, expanded pitfall tables) but prose density improved — the per-sentence tightening is the actual win, not the line count.
- New
read-paperskill for reading and analyzing a single research paper using the PACES framework (Purpose / Approach / Claims / Evaluation / Synthesis). - 4-pass reading strategy: title+abstract+figures → intro+conclusion → full body → targeted deep dive.
- Output template with frontmatter (title, description, authors, domain, keywords, arxiv_id, memory_links).
- Default output location:
docs/paper_summary/<slug>_<YYYYMMDD>.md(Markdown by default, HTML on request). - Cross-references the user's
MEMORY.md(orAGENTS.md/CLAUDE.md) and adds follow-up entries to a reading-list section. - Supports paper sources: arXiv URL, local PDF, paper title (via Semantic Scholar), screenshot (via OCR).
- 3 reference files:
paces-method.md(detailed PACES guide with worked examples),memory-cross-reference.md(MEMORY.md linking patterns),paper-sources.md(arXiv / PDF / OCR recipes). 4-pass reading strategy details (time budget, stop signals) are inlined in SKILL.md to avoid duplication. - 1 example file:
examples/sample-paces-analysis.md(worked PACES analysis of "Attention Is All You Need"). - Anti-trigger clause in description to avoid clashing with
research-workflow(use research-workflow for literature surveys or batch reading, not read-paper).
- Added OpenCode support (
~/.config/opencode/skills) to installer (install.ps1,install.sh) and skill registration scripts (register-skills.ps1,register-skills.sh). - Updated fallback skill lists across installers to include all repository skills (
antigravity-cli,init-agents).
- Added SDLC workflow position flowchart to all 6 RAD skills (
wiki-manager,requirement-analyzer,user-designer,constructor,quality-reviewer,security-reviewer) highlighting current node position.
- New
screenshotskill for capturing web page screenshots - Stealth mode using
playwright-extraandpuppeteer-extra-plugin-stealthto bypass Cloudflare and anti-bot detection - Three scripts:
screenshot.mjs,validate-url.mjs,check-deps.mjs - Support for multiple output formats: WebP (default), PNG, JPEG
- Viewport-only capture by default (16:9: 1280x720)
- Random browser fingerprints (Chrome, Firefox) to avoid pattern detection
- Automatic
.temp/folder creation in workspace
- URL validation with security checks (blocks localhost, private IPs)
- Dependency checker with global install vs npx options
- Cloudflare challenge detection and reporting
- 30s default timeout, configurable via
--timeout
playwrightplaywright-extrapuppeteer-extra-plugin-stealth
1.2.0 — 2026-08-10
- Initial public release of the
research-workflowskill - 12 reference files covering APIs, data-collection patterns, software comparison, single-paper deep-dive, local PDF batch extraction, and elearning reference data
- README with installation instructions for Hermes Agent, Claude Code, Cursor, and generic system-prompt use
- LICENSE (MIT) and this changelog
- Restructured repo to multi-skill convention:
skills/research-workflow/SKILL.md(wasSKILL.mdat root) - Updated README with full install instructions for Hermes Agent (with symlink recipe), Claude Code, Cursor, and generic use
- Repo URL changed — now hosted at
https://github.com/pxuanbach/the-skills(multi-skill repo), notresearch-workflow-skill
- Generalized skill for non-Hermes agents. Removed Hermes-specific paths, variable names, and references from
SKILL.mdand reference files. The skill now works across any agent with browser, terminal, file, and delegation tools. Specific changes:SKILL.md: pitfall section rewritten to remove Hermes venv paths, sandbox-specific CLI examples, and Hermes-only rendering claimsreferences/api-tools.md: script paths generalized;web_searchnote rewrittenreferences/data-collection-patterns.md: tool list rephrased as agent-agnostic;hermes_toolsmention softened to "sometimes exposes helpers"references/single-paper-deep-dive.md: PyMuPDF install instructions rewritten for any agent venvexamples/sample-report.md: footer rephrased
- README rewritten as a skills index. Removed all per-skill install instructions and platform-specific setup. The README is now a short index page listing each skill in this repo (llm-wiki-style).
- Source: extracted from a working Hermes Agent profile (
researcher) - Hermes references that remain (
author: Hermes Agent,metadata.hermesin frontmatter) are credit/metadata only — they do not claim the skill is Hermes-only - The skill is verified to work in any agentic environment with:
browser_navigate,terminal(curl/python3/uv),read_file/write_file,delegate_task,execute_code,skill_view