Follow-up to the llms.txt footer links (PR #879). The automated review noted
the URL join assumed site_url ends in "/". Compute the base once with
trim('/') so the links stay correct whether or not site_url has a trailing
slash; trim only strips '/' from the ends, leaving "https://" intact.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sy9WFFurEjL8gjCp9fs7bp
Add machine-readable repository descriptions following the llmstxt.org
convention so AI agents and crawlers can discover a structured overview
of the entire skills library.
- docs/llms.txt: concise curated index (site sections + 18 domains)
- docs/llms-full.txt: comprehensive self-contained repo description
(scale, design principles, skill package pattern, per-domain detail,
plugin/git rules, and how an agent should use the library)
- Override partials/copyright.html to surface both files as footer links
on every page; add matching styles to stylesheets/extra.css
Both files build to the site root (verified: /llms.txt, /llms-full.txt)
and the footer links resolve to absolute site URLs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sy9WFFurEjL8gjCp9fs7bp
Two housekeeping items surfaced during the contributor-PR hardening session.
1. CHANGELOG backfill — add [Unreleased] entries for five skills that merged
without their own changelog blocks (roast #865, named-persona-adversarial-review
#867, agent-decision-receipts #868/#869, zero-hallucination-coder #870,
deep-research #872). Earlier merges updated headline counters but not this log.
2. Per-domain counter validation — scripts/derive_counters.py --check now also
validates the README "Skills Overview" per-domain table: each domain row's
count must equal the SKILL.md count in its linked folder, and every on-disk
domain must have a row. Previously --check only validated headline aggregates,
so per-domain rows drifted silently. Verified: passes on the fixed state, fails
on a wrong count, fails on a missing row, and parses exactly the 18 real domain
rows (bold-first-cell install/skills-vs-agents tables are not false-flagged).
Trued up the README table to make the new check pass: fixed six stale row
counts (engineering-team 51->52, engineering 78->80, marketing 47->48,
productivity 6->7, ra-qm-team 18->19, c-level 66->68), added the missing
markdown-html row (5), and named the newly-merged skills in their domain
descriptions. Per-domain rows now sum to the 354 headline.
Headline aggregates unchanged (354 skills / 722 refs / 82 plugins / 18 domains).
#872 merged before these automated-review fixes were pushed, so applying them
as a fresh follow-up:
- README: research (academic) domain row 8 -> 9 and add deep-research to the
8-specialist list + the intro-paragraph research stack (the global counters
were bumped in #872 but the per-domain row wasn't — derive_counters --check
only validates headline aggregates, not per-domain rows).
- research router SKILL.md: add a deep-research escalation note after the
Specialist Registry so router users learn about the high-stakes path
(router = fast, deep-research = heavyweight).
- cs-deep-research agent: fix the cs-research Related-Agents link (was a bare
directory, now points at the actual agent file).
Methodology-only scope retained per maintainer decision (no scripts added).
Adds a disciplined multi-source meta-research skill — the heavyweight,
rigor-first alternative to the fast research router. 9-phase pipeline
(reframe into falsifiable hypotheses -> plan -> capability discovery ->
parallel sub-agent fan-out -> score & triangulate -> synthesize + adversarial
pass -> verify -> refresh targets), triangulation against >=3 independent
differently-typed sources, per-source files with verbatim quotes, and a
hard no-fabricated-citations rule.
Concept + SKILL.md contributed by @Socialpranker in PR #851. Hardened for the
research/ per-skill-plugin convention (the PR shipped only the SKILL.md):
- Packaged as a full plugin to match every sibling (pulse/litreview/dossier/...):
added .claude-plugin/plugin.json, marketplace.json entry, cs-deep-research
agent, /cs:deep-research command, and README.
- Dropped a dangling claude-api cross-reference (not a repo skill); the other
cross-refs (research router, competitive-teardown, litreview/dossier/patent)
are all real.
- Preserved the contributed SKILL.md + references/full-catalog.md (the upstream
source-catalog pointer) verbatim otherwise; attribution + upstream link in
plugin.json and README.
Counters trued up via scripts/derive_counters.py --check (passes):
354 skills, 722 references, 96 agents, 102 commands, 82 plugins.
Co-authored-by: Socialpranker <273312799+Socialpranker@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
- schema_generator: _build_aggregate_rating no longer fabricates a 4.8 rating.
It now requires BOTH count AND average and returns None otherwise — a made-up
ratingValue in live JSON-LD contradicts the skill's own anti-fabrication
guidance (Google cross-checks aggregateRating against GBP). Verified: count-only
config emits no AggregateRating; count+average emits the real value.
- nap_checker: normalize_address now expands ALL US state abbreviations via a
US_STATE_ABBREVIATIONS map, not just CA. "TX" vs "Texas" (and every other state)
now compares equal — the skill serves businesses nationwide, so CA-only
normalization silently under-reported mismatches for everyone else.
- SKILL.md: softened the "< 50 reviews" proactive trigger from "most SF Bay Area
markets" (inherited from the original author's metro) to "most competitive metro
markets".
All 3 scripts pass --help + sample run.
- Wire local-seo-manager into marketing-ops routing matrix (SEO Pod). Routing is
matrix-driven, so without this the router never sends "GBP audit" / "NAP
consistency" / "Map Pack" queries to the new skill. (medium — the flagged item)
- nap_checker: only report a "(missing)" phone mismatch when the canonical record
actually has a phone (elif canon_phone and not listing.get('phone')). Previously
a listing with no phone vs a canonical with no phone produced a misleading line.
Verified: no phantom mismatch when neither side has a phone.
- SKILL.md References section now lists review-response-templates.md (the 3rd
shipped reference, previously cited inline in Mode 1 but omitted from the list).
- marketplace.json: true up the stale marketing-skills plugin description
(44 skills / 59 tools / 86 refs -> 47 / 62 / 89) since this PR already edits
that file.
Config-key KeyError guard remains a deliberately-deferred nit (stdlib demo tools,
sample path fully covered). All 3 scripts still pass --help + sample run.
Address the two actionable items from the second automated review on #871:
- Add a CHANGELOG.md [Unreleased] entry for local-seo-manager (the repo maintains
per-PR changelog entries; the earlier commits missed it).
- Bump the README per-domain Marketing row 46 -> 47 to reflect the added skill
(this row isn't CI-validated, but it's the domain this PR touches).
The 3rd observation (config KeyError guard) remains a deliberately-deferred nit.
- service_area_generator: wire the previously-dropped inputs into the brief.
`business_type`, the `services` list, and `state` were accepted (and threaded
from config) but never rendered — the user's service list and state silently
vanished. Now surfaced in the opening-paragraph guidance and meta/CTA lines.
- schema_generator: stop emitting an empty geo block. The top-level empty-value
filter didn't reach into the nested dict, so `{"latitude":"","longitude":""}`
survived and produced invalid JSON-LD. geo is now only added when both
coordinates are supplied (verified: omitted for sample, present when provided).
- Removed the unused `import sys` from all three scripts.
(Config-key KeyError guard — the 4th, nit-level finding — left as-is; the scripts
are stdlib demo tools and the sample path supplies all keys.)
All three scripts still pass --help + sample run.
Adds a marketing skill for local service-area businesses (appliance repair,
HVAC, plumbing, cleaning, electrical): 4 modes — GBP audit, service-area page
generation, NAP consistency, and LocalBusiness schema — with 3 stdlib scripts
(nap_checker, service_area_generator, schema_generator), 3 references (80-point
checklist, schema types, review-response templates). Fills a genuine gap: the
library had national/technical SEO (seo-audit, programmatic-seo) but no
local/Map-Pack SEO skill.
Contributed by @Steffonet in PR #797. Light hardening before merge:
- Fixed two dangling skill cross-references: ai-seo -> aeo (the repo's actual
Answer Engine Optimization skill; 2 places), and removed the reference to a
non-existent gbp-content-creator companion skill.
- Reworded the description's first sentence ("Manage local SEO...") so it passes
skill_description_validator.
Placement is correct as-is (marketing-skills plugin globs ./skills), so no
plugin.json or marketplace entry is needed. All 3 scripts pass --help + sample.
Counters trued up via scripts/derive_counters.py --check (passes):
353 skills, 593 tools, 721 references.
Co-authored-by: Steffonet <214469854+Steffonet@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
* bug: several bug fixes and improvements (see comments)
- [bug] fixed the shebang for portability (wouldn't run on my system)
- [feat] improved the inline python scripts; the `--all` and `--category` flags now read/dedupe names from the `skills-index.json` file so that stale entries (e.g. `.codex/skills/playwright-pro`) do not get treated as installable skills
- [bug] fixed the counter from installed++/failed++ to ++installed/++failed, which caused the script to exit upon installing the first skill
- [style] formatting fix
* fix(codex-install): improve error handling and validation for skill and category installation
---------
Co-authored-by: Alireza Rezvani <5697919+alirezarezvani@users.noreply.github.com>
Adds an opt-in coding-discipline skill: a Discuss -> Map -> Decompose ->
Execute -> Verify loop that grounds code in verified structure (KNOWN/INFERRED/
UNKNOWN codebase mapping, atomic-story decomposition, a lazy-senior-dev YAGNI
ladder) with no invented APIs, assumed imports, or placeholder code. Synthesizes
four MIT/open-source projects (Ralph, GSD Core, Graphify, Ponytail).
Concept + SKILL.md contributed by @mehanshbarthwal-lab in PR #854. Hardened for
this repo:
- Scoped activation to OPT-IN (high-stakes / complex / multi-file / explicitly
requested rigor) instead of auto-firing on every coding verb, so it doesn't
hijack all coding requests in users' setups.
- Fixed plugin.json: skills ["./skills/zero-hallucination-coder"] (was bare
"./", which fails check_plugin_json), version 2.10.3 (was stale 2.1.2),
author aligned to repo owner + attribution block crediting the contributor
and all four source repos.
- Restructured to the engineering standalone-plugin layout
(engineering/<plugin>/skills/<name>/SKILL.md) matching caveman/grill-me/handoff.
- Trimmed the ~130-line embedded multi-method install guide + external-tool
install promo (marketplace handles install); kept the credits table.
- Fixed the description to pass skill_description_validator (third person +
explicit "Use when" trigger).
- Registered in marketplace.json.
Counters trued up via scripts/derive_counters.py --check (passes):
352 skills, 81 plugins.
Co-authored-by: mehanshbarthwal-lab <227379980+mehanshbarthwal-lab@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
The "Decision 2" table listed inputs_hash under "required keys this skill
enforces," but build_action_manifest.py only enforces four required keys
(agent_id, operation, target, policy). inputs_hash and decision_label are
auto-added, not required input. Clarified: 4 required + 2 auto-added, so the
doc matches the script.
Follow-up to #868 (agent-decision-receipts), which merged before this fix landed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
Adds a ra-qm-team skill that mints tamper-evident, post-quantum-signed receipts
for consequential agent actions (EU AI Act Article 12 record-keeping, OWASP
Agentic excessive-agency). A stdlib-only script builds/validates the action
manifest; signing is delegated to the open-source openagentontology package
(Apache-2.0, opt-in install — adds no repo dependency).
Concept + script contributed by @CWNApps in PR #863. Hardened for this repo:
- Moved from the orphaned ra-qm-team/agent-decision-receipts/ (a sibling of
skills/, not picked up by the ra-qm-skills plugin's ./skills glob) into
ra-qm-team/skills/agent-decision-receipts/ so it is actually distributed.
- Stripped self-promotion of the contributor's other products (SalesGPT /
OpenOutreach / Trust Gate MCP / "CWN distribution") from the references doc;
kept the technical PQ-strict-mode pattern, genericized the env var name.
- Removed the 25-term SEO keyword-stuffing block (not a repo convention).
- Fixed the description to third person (passes skill_description_validator).
- Repointed cross-refs to the real sibling skills (eu-ai-act-specialist,
iso42001-specialist).
The stdlib script is preserved as-authored (clean; builds + validates the
manifest, rejects missing fields, enforces ASCII reproducibility).
Counters trued up via scripts/derive_counters.py --check (passes):
351 skills, 590 tools, 718 references.
Co-authored-by: CWNApps <129076989+CWNApps@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
Adds a philosophy-grounded code-review skill: review through the lens of real
engineers' *documented, sourced* principles (Torvalds, Thompson, Carmack, Beck,
Brooks + Jobs, Cagan, Traynor), complementing engineering-team/adversarial-reviewer
(abstract roles) and code-reviewer (general quality).
Concept contributed by @YuhaoLin2005 in PR #866. Hardened for this repo's
conventions before merge:
- Consolidated to ONE location (engineering-team/skills/, auto-included via the
engineering-skills plugin's ./skills glob). Dropped the orphaned top-level
skills/ copy the original PR also added — no such plugin root exists in the tree.
- Added anti-fabrication discipline: cite the sourced principle (not an invented
verbatim quote), confidence levels on every attribution, drop a persona rather
than fabricate — mirrors productivity/andreessen's citation rule. LLMs hallucinate
quotes; attributing invented words to real living engineers is the core risk.
- Added references/persona_principles.md grounding every persona in a real,
citeable source with a confidence level (7+ sources incl. de Bono, Kahneman, Feynman).
- Removed the dangling /adversarial-review slash command reference and the
non-English trigger phrase; description passes skill_description_validator.
Counters trued up via scripts/derive_counters.py --check (passes):
350 skills, 717 references, 80 plugins.
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: YuhaoLin2005 <278400118+YuhaoLin2005@users.noreply.github.com>
New productivity/roast/ plugin. Convenes five independent reviewers (The Critic,
The Champion, The Analyst, The Investigator, The Customer) in parallel on a business
idea, then a Judge synthesizes one GO / RESHAPE / KILL verdict with the cheapest
48-hour test to de-risk it.
Renamed the personas/steps from the source draft to be self-explanatory for users:
Critic/Champion/Analyst/Investigator/Customer (was Contrarian/Expansionist/Logician/
Researcher/Buyer) and Frame the idea / Run the 5-angle panel / Call the verdict.
Path-B contract:
- 3 stdlib tools (no LLM calls): brief_builder, verdict_synthesizer (weighted,
non-compensatory veto gates, tension detection — never a plain average),
cheapest_test_designer (risk → falsifiable 48-hour test)
- 3 references (5-7 cited sources each), 2 assets, cs-roast-judge agent, /cs:roast command
- source.distinct_from disambiguates vs andreessen (single lens), boardroom
(enterprise pipeline), grill-me (no verdict)
Counters trued up via scripts/derive_counters.py --check (passes):
346 skills, 582 tools, 708 refs, 94 agents, 100 commands, 79 plugins.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
Address internal-consistency gaps from the count bump: the marketplace.json
root description still read 347/17 (only metadata.description was updated),
and the README skills table had no loop-library row despite the "18 domains"
heading. Both now reflect 348 skills / 18 domains with loop-library listed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEJH6wwyaEs1d6AAca2HLR
Gate G1 (check_paths.py --all) was failing on dev's arquiteto-de-empresa
skill, surfaced into this branch by the dev merge. The 3 references are
genuine false positives: two are inside a markdown code-example showing
OKF bundle link syntax in the user's generated output, and one is a
command doc pointing at its sibling skill's references/ dir. Added to
check_paths_allowlist.txt per the workflow's documented remedy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEJH6wwyaEs1d6AAca2HLR
Adding the loop-library/ folder bumped the derived counters. Sync the
headline claims in README.md, CLAUDE.md, and marketplace.json so
scripts/derive_counters.py --check passes: skills 345->346, domains
17->18, references 705->707.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEJH6wwyaEs1d6AAca2HLR
Install the loop-library skill from Forward-Future/loop-library into the
repo, preserving the upstream skill folder exactly. SKILL.md, agents/openai.yaml,
references/discover.md, and references/audit.md are byte-for-byte copies of
upstream (skills/loop-library/). Adds the MIT LICENSE and a provenance README.
The published loops themselves are served live from the database-backed catalog
(catalog.md / catalog.json) and are intentionally not committed to Git upstream;
the skill fetches them at runtime as the single source of truth.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEJH6wwyaEs1d6AAca2HLR