Commit Graph
33 Commits
Author SHA1 Message Date
rootiest 4b1b3c3a19 Merge pull request 'feat: add mattpocock-skills as an external-source plugin' (#5) from feat-add-mattpocock-skills-plugin into main
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 16s
Reviewed-on: #5
2026-08-25 00:55:23 +00:00
rootiest ce2a82d1a8 feat: add mattpocock-skills as an external-source plugin
Generate plugin manifests / validate (pull_request) Successful in 16s
Generate plugin manifests / generate (pull_request) Skipped
Same pattern as caveman/ponytail — installed straight from
mattpocock/skills, nothing vendored. Claude Code-only.
2026-08-24 20:54:29 -04:00
rootiest 497fbabbbd Merge pull request 'feat: split MCP plugins, add per-target restrictions, add external-source plugins' (#4) from feat-split-mcp-plugins-and-targets into main
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 19s
Reviewed-on: #4
2026-08-25 00:48:41 +00:00
rootiestandClaude Sonnet 5 37d6783ea4 feat: add external-source plugins for third-party caveman/ponytail
Generate plugin manifests / validate (pull_request) Successful in 16s
Generate plugin manifests / generate (pull_request) Skipped
Lets a plugin.json declare an `external` target->source map instead of
carrying local content, so the generator emits that Claude Code
marketplace source (e.g. a GitHub repo) verbatim rather than a local
dist path. Adds caveman and ponytail as external entries, installed
straight from their upstream repos with nothing vendored or copied.
Claude Code-only for now — agy has no equivalent external-source
mechanism, and both plugins' hooks/MCP assume Claude Code's runtime.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
2026-08-24 20:47:13 -04:00
rootiest 13dcfca27c Merge pull request 'feat: split MCP servers into their own plugins, add per-target restrictions' (#3) from feat-split-mcp-plugins-and-targets into main
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 16s
Reviewed-on: #3
2026-08-25 00:32:29 +00:00
rootiestandClaude Sonnet 5 c6f40bcf6b feat: split MCP servers into their own plugins, add per-target restrictions
Generate plugin manifests / validate (pull_request) Successful in 18s
Generate plugin manifests / generate (pull_request) Skipped
Split the GitHub/Gitea MCP servers out of core-essentials into their own
github-mcp/gitea-mcp plugins, so a user can install either, both, or
neither independently instead of always getting both bundled together.

Add an optional "targets" field, honored at both levels:
  - plugin.json: restricts the whole plugin (including any hooks/mcp/
    rules/commands/agents it bundles) to specific targets.
  - a skill's own SKILL.md frontmatter: restricts just that one skill,
    independent of its plugin's sibling skills (narrowed to, never wider
    than, the plugin's own targets).

Omitting it (the default everywhere) means every target in manifest.yaml,
so this is fully backward compatible. A plugin left with no content at
all for a given target is now skipped entirely for that target rather
than emitting an empty output directory / marketplace entry.

Applies this to the actual motivating case: delegate-agy only makes sense
run from Claude Code (it shells out to `agy`), so it's now marked
targets: [claude-code] and no longer ships into dist/agy at all — it was
previously being installed into agy for no reason.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
2026-08-24 20:28:36 -04:00
rootiest 68fbadbfec Merge pull request 'fix(agy): replace unreliable plugins.json discovery with a real installer' (#2) from fix-agy-install-mcp-plugin into main
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 18s
Reviewed-on: #2
2026-08-25 00:17:49 +00:00
rootiestandClaude Sonnet 5 37a61e597a fix(agy): replace unreliable plugins.json discovery with a real installer
Generate plugin manifests / validate (pull_request) Successful in 19s
Generate plugin manifests / generate (pull_request) Skipped
Testing against a live agy session confirmed the plugins.json "entries"
mechanism documented for agy does not reliably surface a plugins/<name>/
bundle as a plugin: hooks and MCP servers inside it are never loaded, and
only a stray skill occasionally surfaces via agy's generic skill-walk
("No plugins are currently loaded or discoverable in the active context").

Add scripts/install_agy.py, which instead pushes a generated dist/agy
into the locations confirmed to actually work: symlinks each skill into
~/.gemini/config/skills/<name>/ (or a project's .agents/skills/ with
--project) and merges each plugin's mcpServers/hooks into the shared
global mcp_config.json/hooks.json without touching unrelated entries.
Supports --uninstall to cleanly remove exactly what was added.
generate_plugins.py's --install-local now shells out to it for the agy
side instead of printing the broken plugins.json instructions.

Also fixes plugins/core-essentials/mcp.json, which had been hand-added
directly under the repo root (never discovered by the generator) with
invalid JSON (missing the outer object) and no env-var indirection for
its GitHub/Gitea tokens; moved under the plugin and wired up with
${VAR} placeholders instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
2026-08-24 20:15:41 -04:00
rootiest 5688b9a5ee ci: update runners 2026-08-24 19:48:34 -04:00
rootiest 4d9ca3cef1 Merge pull request 'feat: multi-extension plugin framework for Claude Code and agy' (#1) from feat-plugin-marketplace-framework into main
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Failing after 1s
Reviewed-on: #1
2026-08-24 23:22:49 +00:00
rootiestandClaude Sonnet 5 bfd96285ee feat: restructure into a multi-extension plugin framework for Claude Code and agy
Generate plugin manifests / generate (pull_request) Skipped
Generate plugin manifests / validate (pull_request) Successful in 7s
Replace the skills-only SSoT (skills/<name>/SKILL.md) with plugins/<name>/,
where a plugin can bundle skills, MCP servers, lifecycle hooks, rules,
commands, and agents. scripts/generate_plugins.py now discovers plugins
from one or more layered --source roots and emits real per-target trees
(dist/claude-code/** + .claude-plugin/marketplace.json, dist/agy/**),
translating hooks.json/mcp.json between Claude Code's and agy's actual
schemas instead of only fanning out flat skill lists.

Adds a private-overlay build path (--source/--private-repo/--out/
--install-local) so a second, non-public repo (PII, tokens, personal-only
plugins) can extend or override the public plugin set without either repo
touching the other's history — private builds default to a gitignored
dist-private/ and never land in tracked output.

Drops install.sh and descriptions.json: both only ever covered skills and
pre-date the native plugin marketplace; both tools now install the plugin
marketplace the documented way (Claude Code's /plugin marketplace add,
agy's plugins.json entries). CI path filters move to plugins/**, and the
workflow gains workflow_dispatch for a manual re-trigger.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
2026-08-24 19:20:42 -04:00
rootiest 165138c958 Revert "chore: use short url for repository"
This reverts commit e8ea15cb64.

fix: revert "chore: use short url for repository"
2026-08-24 14:55:40 -04:00
rootiest e8ea15cb64 chore: use short url for repository 2026-08-24 14:51:49 -04:00
gitea-actions 1a848ae063 chore(plugins): regenerate plugin manifests 2026-08-24 18:47:41 +00:00
rootiest 6111c139b2 chore: change repository url and short urls
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 54s
Also updates marketplace names
2026-08-24 14:46:45 -04:00
rootiest 5a4f08e377 chore: change repository name/path
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Failing after 0s
2026-08-24 14:40:49 -04:00
rootiest aee7facbae feat(marketplace): implement plugin marketplace
Generate plugin manifests / validate (push) Skipped
Generate plugin manifests / generate (push) Successful in 54s
Implements a new plugin marketplace structure and expands repository
support beyond basic skills to include plugins, MCPs, hooks, etc.
2026-08-24 14:38:52 -04:00
rootiest b3185381c5 feat(git-publish-workflow): feat(git-publish-workflow): handle multi-branch repsitories
Verify branching tree and select the proper PR base/target to reflect
the branching order.
2026-07-27 21:09:20 -04:00
rootiest c3720f33a0 docs: add author field to all SKILL.md frontmatters 2026-06-17 22:26:42 -04:00
rootiest 8948858c86 chore: expand .gitignore boilerplate 2026-06-17 22:19:17 -04:00
rootiest 3e89662e72 docs: sync README with current skill set
Document docs-sync-audit, date-time, and technical-devlog-scribe; update the stale ship-it phase 1 reference from readme-sync-audit to docs-sync-audit.
2026-06-17 22:19:15 -04:00
rootiest 9674771c35 docs: standardize SKILL.md YAML frontmatter
Give every skill a consistent name/description/version/user-invocable header. Add missing frontmatter to date-time and ship-it; normalize systematic-enumeration name to kebab-case and version to semver.
2026-06-17 22:19:14 -04:00
rootiest fc185e1121 feat: add technical-devlog-scribe skill
Generates a structured, objective technical summary of a development session, saved to AGENTS/devlogs/. Registers it in descriptions.json.
2026-06-17 22:19:12 -04:00
rootiest 1bf47c4527 fix: update ship-it skill to use the new docs-sync-audit skill for phase 1 2026-06-08 17:04:07 -04:00
rootiest 2e822573b1 feat: add docs-sync-audit
Functions almost exactly as the readme-sync-audit, but attempts to
identify existing documentation and use that as the "Single Source of
Truth" instead of the README. README will also be updated only when
changes are relevant to the README layout/content.
2026-06-08 16:56:49 -04:00
rootiest d9b56d8f2e feat: add date-time skill
Allows the AI to get the current system datetime and use it when
relevant in a conversation/task.
2026-06-01 16:32:28 -04:00
rootiest 11a02b74a0 feat: add Antigravity CLI support, --list flag, and skill descriptions
- Replace Gemini CLI with Antigravity CLI throughout (--gemini kept as
  hidden fallback flag; GEMINI_SKILLS_DIR honoured as legacy env var)
- Default install dir updated to ~/.gemini/antigravity-cli/skills
- Add ANTIGRAVITY_SKILLS_DIR env var with GEMINI_SKILLS_DIR fallback
- Add -l/--list flag: lists available skills with one-line descriptions
- Add descriptions.json mapping skill names to short descriptions;
  fetch_descriptions() prefers a local copy when running from a clone,
  falls back to remote URL for curl-pipe installs
- Document ship-it skill in README (was missing since its addition)
- Fix Manual Install cd path: claude-skills → ai-skills
2026-05-31 21:15:30 -04:00
rootiest cd17b074dd feat: ship-it
Add a new skill (/ship-it) which essentially just executes the
following:

- /readme-sync-audit
- /git-publish-workflow
2026-05-31 20:34:13 -04:00
rootiest cc19f1fe47 docs(readme): consolidate short-url tip onto one line 2026-05-13 22:19:31 -04:00
rootiest f185583c24 docs(readme): add short-url tip callout to installation section
Adds a [!TIP] callout above the curl examples noting that
https://url.rootiest.dev/skills can be substituted for the full raw
URL, with a short e.g. showing the pattern.
2026-05-13 22:17:41 -04:00
rootiest 80cdf75de2 fix(install): use subdirectory layout for installed skills
Both Claude Code and Gemini CLI expect skills at:
  <skills-dir>/<skill-name>/SKILL.md

rather than the flat:
  <skills-dir>/<skill-name>.md

Update install_to_claude and install_to_gemini to create the skill
subdirectory and write the file as SKILL.md within it.
2026-05-13 22:02:40 -04:00
rootiest 20a811aca0 feat: add install.sh and README.md
Introduces a standalone skill installer script and project landing page
documentation covering all three skills in the repository.

install.sh:
- Downloads and installs SKILL.md files from the remote repository into
  the appropriate local directory for Claude Code (~/.claude/skills/) and/or
  Gemini CLI (~/.gemini/skills/)
- Supports --claude/-c and --gemini/-g flags to target one or both tools;
  defaults to both when neither is specified
- Accepts positional skill name arguments or --all/-a to install every
  available skill; named arguments always take precedence over --all
- Discovers available skills at runtime via the Gitea contents API, with
  automatic fallback to a depth-1 sparse git clone when the API is
  unreachable or returns no results; JSON parsing uses jq, then python3,
  then an awk fallback in order of availability
- Validates skill names against path traversal (../) and slash injection
  before any download is attempted
- Supports CLAUDE_SKILLS_DIR and GEMINI_SKILLS_DIR environment variable
  overrides for non-default install locations
- Checks for curl and git dependencies at startup and exits with a clear
  error listing any missing tools
- Cleans up any temporary clone directory on exit via a trap on EXIT
- Displays colorized output (Bold/Cyan headers, Green success, Yellow
  warnings, Red errors) when stdout is a terminal; disables all ANSI codes
  automatically when piped or redirected
- Includes a fully formatted --help/-h page documenting all flags,
  environment variables, and usage examples

README.md:
- Landing page covering project purpose, all three skills with per-skill
  purpose and execution protocol summaries, and a full Installation section
- Installation section documents the standard curl pipe form
  (curl -sL URL | bash -s -- args) with six ready-to-use one-liner examples
  covering all major flag combinations
- Flags & Options table, Environment Variables table, and a Manual Install
  section for users who prefer to inspect before running
- Table of contents with anchor links for all major sections
- License section referencing GPL-3.0-or-later
2026-05-13 21:53:56 -04:00
rootiest f1c88afc22 chore: initial commit 2026-05-13 21:10:09 -04:00