diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..bbd04f0 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,34 @@ +name: pages +# Publishes site/ (the catalogue at https://stylusnexus.github.io/agent-plugins/) +# to GitHub Pages whenever it changes on main. ci.yml's check-readme.py keeps the +# catalogue's packs, skills, and counts in step with plugins/ on disk. +on: + push: + branches: [main] + paths: ["site/**", ".github/workflows/pages.yml"] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + name: deploy + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + - uses: actions/configure-pages@v6 + - uses: actions/upload-pages-artifact@v5 + with: + path: site + - id: deployment + uses: actions/deploy-pages@v5 diff --git a/README.md b/README.md index f7e9830..608b4f2 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Windsurf, Zed, opencode, Cline, Continue, Hermes and others) through the Skills Every skill is repo-agnostic: it detects your repository's conventions rather than assuming its own, and defers to a repo-local version of itself when your project defines one. -**[Browse the catalogue →](https://claude.ai/code/artifact/667c2158-4833-4535-a5c5-a5597dea8fea)** — every pack, what it's for, and how to install it on your agent. +**[Browse the catalogue →](https://stylusnexus.github.io/agent-plugins/)** — every pack, what it's for, and how to install it on your agent. > ⚠️ **Trust before you install.** Plugins run code on your machine. Review a plugin's source before > installing it. Everything here is open-source — links are in the table below. @@ -484,6 +484,7 @@ agent-plugins/ │ ├── gen-catalog.py # writes the skill catalogue and skills.sh.json │ ├── check-links.py # relative links and anchors resolve │ └── check-private-terms.sh # nothing private ships in a skill +├── site/ # the catalogue page, published to GitHub Pages ├── skills.sh.json # skills.sh groupings, one per pack ├── LICENSE └── README.md diff --git a/package.json b/package.json index e5a4624..7ce5179 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "github-copilot", "developer-tools" ], - "homepage": "https://github.com/stylusnexus/agent-plugins#readme", + "homepage": "https://stylusnexus.github.io/agent-plugins/", "bugs": { "url": "https://github.com/stylusnexus/agent-plugins/issues" }, diff --git a/scripts/check-private-terms.sh b/scripts/check-private-terms.sh index 52ab688..c71fc0e 100755 --- a/scripts/check-private-terms.sh +++ b/scripts/check-private-terms.sh @@ -5,6 +5,9 @@ # has no business in this PUBLIC MIT marketplace's shipped text. # # Scope is plugins/*/skills/**, plugins/*/agents/**, and plugins/*/README.md. +# The root README.md and site/ (the GitHub Pages catalogue) are public too, but +# they name this org's repos and publisher on purpose, so they're checked +# against the private overlay only (failures and warnings), like docs/ below. # plugin.json and LICENSE are never scanned -- the publisher name there is # legitimate and the whole point of the LICENSE file. # @@ -153,6 +156,36 @@ elif [ -d docs ]; then echo "no private-terms overlay available -- skipping docs/ check" >&2 fi +# Public pages outside plugins/: the root README and the Pages site. Private +# overlay terms fail; warn: vocabulary warns. Public-list terms don't apply here +# (these pages link this org's repos by design). +PAGES="" +[ -f README.md ] && PAGES="README.md" +[ -d site ] && PAGES="$PAGES site" +if [ -n "$PAGES" ] && [ -s "$OVERLAY_FILE" ]; then + while IFS= read -r pattern; do + case "$pattern" in + ''|'#'*) continue ;; + warn:*) + # shellcheck disable=SC2086 + hits=$(grep -rniIE "${pattern#warn:}" $PAGES 2>/dev/null || true) + if [ -n "$hits" ]; then + echo "WARNING: private-product vocabulary (from the private list) found; check these lines:" >&2 + report_warning "$hits" + warned=1 + fi + continue ;; + esac + # shellcheck disable=SC2086 + hits=$(grep -rniIE "$pattern" $PAGES 2>/dev/null || true) + if [ -n "$hits" ]; then + echo "PRIVATE TERM (from the private list) found in README.md or site/ at:" >&2 + echo "$hits" | cut -d: -f1,2 | sed 's/^/ /' >&2 + fail=1 + fi + done < "$OVERLAY_FILE" +fi + [ "$warned" = 1 ] && echo "warnings above are not failures: confirm each line is generic, or rewrite it" >&2 -[ "$fail" = 0 ] && echo "no private terms found in plugins/*/skills, plugins/*/agents, plugins/*/README.md, or docs/" +[ "$fail" = 0 ] && echo "no private terms found in plugins/*/skills, plugins/*/agents, plugins/*/README.md, docs/, README.md, or site/" exit "$fail" diff --git a/scripts/check-readme.py b/scripts/check-readme.py index 50951ea..9eb54ec 100644 --- a/scripts/check-readme.py +++ b/scripts/check-readme.py @@ -13,6 +13,9 @@ 3. Each plugins//README.md must mention every skill under that pack's skills/ directory (found as a table cell that is exactly one backticked name), and mention no skill that doesn't exist. + 4. The GitHub Pages catalogue (site/index.html) must have a card for every + pack with the right skill count and one chip per skill, and its headline + plugin and skill counts must match the README's. The table format is read from the README rather than hardcoded (look for the header row whose first cell is "Pack" / "Plugin"), so formatting can move @@ -219,15 +222,58 @@ def check_plugin_readmes(): errors.append(f"{readme}: table(s) mention skill(s) not in this pack: {sorted(extra)}") +SITE_INDEX = os.path.join("site", "index.html") + + +def check_site(): + if not os.path.isfile(SITE_INDEX): + return + with open(SITE_INDEX, encoding="utf-8") as fh: + html = fh.read() + cards = {} + for art in re.findall(r'
(.*?)
', html, re.S): + m = re.search(r'class="plugin-name">(?:]*>)?([a-z0-9-]+)', art) + if m: + cards[m.group(1)] = art + total = 0 + for pack in sorted(os.listdir(PLUGINS_DIR)): + real = actual_skills(pack) + if not real: + continue + total += len(real) + art = cards.get(pack) + if art is None: + errors.append(f"{SITE_INDEX}: no card for pack '{pack}'") + continue + n = re.search(r'(\d+) skills', art) + if not n or int(n.group(1)) != len(real): + errors.append(f"{SITE_INDEX}: card '{pack}' should say {len(real)} skills") + chips = set(re.findall(r'([a-z0-9-]+)', art)) + if chips != set(real): + errors.append( + f"{SITE_INDEX}: card '{pack}' chips differ from plugins/{pack}/skills/: " + f"missing {sorted(set(real) - chips)}, extra {sorted(chips - set(real))}" + ) + with open(ROOT_README, encoding="utf-8") as fh: + headline = re.search(r'\*\*(\d+)\s+plugins?,\s*(\d+)\s+skills?\*\*', fh.read()) + site_plugins = re.search(r'(\d+)plugins', html) + site_skills = re.search(r'(\d+)skills', html) + if not site_skills or int(site_skills.group(1)) != total: + errors.append(f"{SITE_INDEX}: headline skill count should be {total}") + if headline and (not site_plugins or site_plugins.group(1) != headline.group(1)): + errors.append(f"{SITE_INDEX}: headline plugin count should be {headline.group(1)}") + + def main(): check_root_readme() check_plugin_readmes() + check_site() if errors: print(f"{len(errors)} README/skill-set mismatch(es) found:\n", file=sys.stderr) for e in errors: print(f" {e}", file=sys.stderr) return 1 - print("README pack tables, plugin READMEs, and headline counts all match plugins/ on disk") + print("README pack tables, plugin READMEs, headline counts, and the Pages catalogue all match plugins/ on disk") return 0 diff --git a/site/.nojekyll b/site/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/site/img/social.png b/site/img/social.png new file mode 100644 index 0000000..4171d7d Binary files /dev/null and b/site/img/social.png differ diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..a9b6e3a --- /dev/null +++ b/site/index.html @@ -0,0 +1,555 @@ + + + + + + Agent Plugins: Skill Packs for Claude Code and Codex + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
stylusnexus / agent-plugins
+

Skills for agents that have to ship something.

+

+ agent-plugins is an open-source (MIT) plugin marketplace from Stylus Nexus: ten plugins and 61 + skills that install natively into Claude Code and OpenAI Codex, and into about seventy other + coding agents through the Skills CLI. Eight are skill packs for building, shipping, deciding what + to build, and getting it noticed; two are tools. +

+
+
10plugins
+
61skills
+
~70agents supported
+
MITlicense
+
+
+ +
+
+

Skill packs

+

+ Eight packs, grouped by the job rather than the technology. Each pack's README carries a + rule-ownership table, so the skills inside it don't compete for the same trigger. Dashed + chips are agents, which run in Claude Code. +

+
+ +
+
+ +

The daily loop: read the issue, ground assumptions in the live database, prove it works, then review, merge, and promote. One issue or a batch.

+
+ start-issuedb-truthprove-it + review-slopreview-merge-pipelinedeploy + ship-issuesdb-migration-safetybackup-verify +
+
+ +
+ +

The last mile: turning agent output into something a person wants to read, and getting their judgment back.

+
+ htmlvisual-planvisual-recap + recap-tablewriting-clearly-and-concisely + human-writingredline +
+
+ +
+ +

Built on one premise: a single model's confident answer is not evidence. Councils, arbitration, and specs checked against the actual codebase.

+
+ llm-councilplan-arbiterspec-review + agent-watchdogdebug-feedback-loop +
+
+ +
+

hardening

5 skills
+

The unglamorous pre-launch gates: a missing rate limit, an unsigned webhook, a compromised transitive dependency.

+
+ rate-limit-auditexposure-scanauth-hardening + webhook-reliabilityprivacy-audit +
+
+ +
+

release-ops

5 skills
+

Deciding the version, waiting on CI, publishing, and keeping dependencies current between releases.

+
+ version-checkpr-waitthe-waiting + npm-publishdependency-upgrade +
+
+ +
+ +

Building an accurate picture of a codebase, and the libraries it leans on, before committing to a change.

+
+ codebase-healthcodebase-architecture-scanner + grill-with-docsread-the-damn-docs +
+
+ +
+

product-strategy

14 skills · 2 agents
+

Deciding what to build and why: vision, strategy, value, objectives, roadmaps, and discovery. A chief PM that teaches as it goes and labels evidence apart from assumption.

+
+ product-managerpm-visionpm-strategy + pm-strategy-fitpm-canvaspm-value-proposition + pm-objectivespm-roadmappm-discovery + pm-growthpm-market-analysispm-capabilities + pm-teamspm-visuals + product-managerbusiness-capability-modeler +
+
+ +
+

go-to-market

12 skills · 2 agents
+

Getting a product noticed on a small team's hours: positioning, copy, launches, community, outreach, email, and measurement. It drafts; it never posts or sends for you.

+
+ marketing-leadmk-positioningmk-audience + mk-copymk-brand-kitmk-search + mk-launchmk-communitymk-founder-content + mk-outreachmk-lifecyclemk-measurement + marketing-leadaudience-scout +
+
+
+
+ +
+
+

Tool plugins

+

+ Two plugins ship executable code rather than markdown, so they live in their own repositories + and install from there. +

+
+
+
+

work-plan

CLI + viewer
+

Track-aware daily planning over GitHub issues: shared tracks, AI clustering, coverage, and dependency-aware next-up. Pure-stdlib Python CLI plus an accessible VS Code viewer with a repo-qualified dependency graph.

+
+
+

defect-scan

15 languages
+

Language-aware defect hunter. Detects the stack, triages files by risk, runs the real analyzers (ruff, mypy, tsc, eslint, rubocop, brakeman), then reports findings in confidence tiers, correlated against existing issues.

+
+
+
+ +
+
+

Installing

+

Add the marketplace once, then take whichever packs you want. Plugins run code on your machine, so review a plugin's source before installing it.

+
+
+
+ Claude Code +

Install in Claude Code

+

Terminal, VS Code, and JetBrains extensions share one config, so one install covers all three.

+
/plugin marketplace add stylusnexus/agent-plugins
+/plugin install ship-pipeline@stylus-nexus
+

Skills carry the pack name: /ship-pipeline:prove-it. To get updates automatically, open /plugin → Marketplaces → stylus-nexus → Enable auto-update.

+
+ +
+ Codex +

Install in Codex

+

CLI, app, and IDE extension. Codex reads its own index, so the same marketplace works unchanged.

+
codex plugin marketplace add stylusnexus/agent-plugins
+codex plugin add ship-pipeline@stylus-nexus
+

Type $ship-pipeline:prove-it or run /skills. In the ChatGPT app, type @. To update, run codex plugin marketplace upgrade stylus-nexus, then the add command again.

+
+ +
+ ~70 more +

Install in Cursor, Copilot, Gemini CLI and more

+

Cursor, Copilot, Gemini CLI, Windsurf, Zed, opencode, Cline, Continue, Hermes, Goose, Warp, Aider and more. Detects which agents you already have.

+
npx skills add stylusnexus/agent-plugins
+npx skills add stylusnexus/agent-plugins --skill prove-it deploy
+

Skills arrive without the pack name: /prove-it. Update with npx skills update. Covers all eight skill packs.

+
+
+
+ +
+
+

Where to start

+

Pick the goal closest to yours. If you only take one pack, take ship-pipeline.

+
+
+

Ship code every day without breaking things

ship-pipelinesecond-opinion

+

Get ready to launch

hardeningrelease-opsgo-to-market

+

Decide what to build, and why

product-strategysecond-opinion

+

Get a product noticed on a few hours a week

go-to-marketreporting-comms

+

Find your way around an unfamiliar codebase

codebase-intelreporting-comms

+

Make agent output easier to read and review

reporting-comms

+
+ +
+ These packs have opinions. +

+ They're repo-agnostic: every skill detects your conventions rather than assuming them, and defers + to a repo-local version of itself when your project defines one. They still hold a point of + view: evidence before "done", detect rather than assume, one rule per owner. Each README states + the opinion plainly, so you can tell quickly whether it fits how you work. +

+
+
+ +
+

Questions

+
+

How do I install agent-plugins in Claude Code?

Run /plugin marketplace add stylusnexus/agent-plugins, then /plugin install ship-pipeline@stylus-nexus for each pack you want. Skills then carry the pack name, as in /ship-pipeline:prove-it.

+

How do I install agent-plugins in Codex?

Run codex plugin marketplace add stylusnexus/agent-plugins, then codex plugin add ship-pipeline@stylus-nexus for each pack you want. Invoke a skill with $ship-pipeline:prove-it, or run /skills.

+

How do I install agent-plugins in Cursor, Copilot, or another agent?

Run npx skills add stylusnexus/agent-plugins. The Skills CLI detects which agents you have and writes the skills into each one; add --skill and skill names to take only some.

+

How do I keep agent-plugins up to date?

In Claude Code, enable auto-update for the stylus-nexus marketplace under /plugin, Marketplaces. In Codex, run codex plugin marketplace upgrade stylus-nexus, then add each pack again. With the Skills CLI, run npx skills update.

+

What is ship-pipeline?

ship-pipeline is the agent-plugins skill pack for the daily loop: it reads the issue, grounds assumptions in the live database, proves the change works, then reviews, merges, and promotes it, for one issue or a batch.

+

Why is a skill called /prove-it in one agent and /ship-pipeline:prove-it in another?

Claude Code and Codex plugins prefix skills with the pack name. Skills installed through the Skills CLI or npm have no prefix.

+
+
+ + + +
+ + diff --git a/site/llms.txt b/site/llms.txt new file mode 100644 index 0000000..edf06d5 --- /dev/null +++ b/site/llms.txt @@ -0,0 +1,28 @@ +# agent-plugins + +> Skill packs for Claude Code, Codex, and about 70 other coding agents: shipping, reviews, hardening, releases, product strategy, and go-to-market. MIT. + +Install into Claude Code or Codex from the plugin marketplace (`stylusnexus/agent-plugins`), or into other agents with `npx skills add stylusnexus/agent-plugins`. + +## Links + +- [Catalogue](https://stylusnexus.github.io/agent-plugins/): every pack, its skills, and install steps for each agent. +- [Repository](https://github.com/stylusnexus/agent-plugins): source, per-pack READMEs, and the full skill index. +- [npm package](https://www.npmjs.com/package/@stylusnexus/agent-plugins): installs through the Skills CLI. + +## Skill packs + +- [ship-pipeline](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/ship-pipeline/README.md): The daily loop: read the issue, ground assumptions in the live database, prove it works, then review, merge, and promote. One issue or a batch. +- [reporting-comms](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/reporting-comms/README.md): The last mile: turning agent output into something a person wants to read, and getting their judgment back. +- [second-opinion](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/second-opinion/README.md): Built on one premise: a single model's confident answer is not evidence. Councils, arbitration, and specs checked against the actual codebase. +- [hardening](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/hardening/README.md): The unglamorous pre-launch gates: a missing rate limit, an unsigned webhook, a compromised transitive dependency. +- [release-ops](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/release-ops/README.md): Deciding the version, waiting on CI, publishing, and keeping dependencies current between releases. +- [codebase-intel](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/codebase-intel/README.md): Building an accurate picture of a codebase, and the libraries it leans on, before committing to a change. +- [product-strategy](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/product-strategy/README.md): Deciding what to build and why: vision, strategy, value, objectives, roadmaps, and discovery. A chief PM that teaches as it goes and labels evidence apart from assumption. +- [go-to-market](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/plugins/go-to-market/README.md): Getting a product noticed on a small team's hours: positioning, copy, launches, community, outreach, email, and measurement. It drafts; it never posts or sends for you. + +## Optional + +- [Full README](https://raw.githubusercontent.com/stylusnexus/agent-plugins/main/README.md): install, update, and removal commands for every agent, plus every skill by pack. +- [work-plan](https://github.com/stylusnexus/work-plan-toolkit): track-aware daily planning over GitHub issues; a Python CLI and VS Code viewer. +- [defect-scan](https://github.com/stylusnexus/defect-scan): language-aware defect hunter that runs your real analyzers across 15 languages. diff --git a/site/sitemap.xml b/site/sitemap.xml new file mode 100644 index 0000000..af510e3 --- /dev/null +++ b/site/sitemap.xml @@ -0,0 +1,4 @@ + + + https://stylusnexus.github.io/agent-plugins/ +