43 Commits

Author SHA1 Message Date
Chris Farhood 5be276b945 update/enhance gitea skills 2026-05-27 09:59:50 -04:00
Chris Farhood 3ddee00eda add more comprehensive gitea skills 2026-05-27 09:30:34 -04:00
Chris Farhood 3b8db34df1 Add .mcp.json 2026-05-27 13:20:46 +00:00
Chris Farhood fd23cfefb5 fix(gitea-tea): add missing YAML frontmatter delimiter
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:09:56 -04:00
Chris Farhood 540157fe76 feat(gitea-tea): import skill from claude-skills-marketplace
Add gitea-tea skill for managing Gitea via the tea CLI. Covers issues,
PRs, releases, repos, Actions, webhooks, SSH keys, admin users, and
the generic api command. Significantly expanded from upstream source
to include Actions workflows/secrets/variables, webhooks, SSH keys,
admin user management, and improved AI agent guidance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:01:36 -04:00
Chris Farhood ef8c736173 fix(agent-setup): source existing .env and update GH_CONFIG_DIR in place
Preserves other variables already in $AGENT_HOME/.env when updating
the GH_CONFIG_DIR export rather than overwriting the file.
2026-05-03 18:15:40 -04:00
Chris Farhood e3fb22a098 feat(agent-setup): add skill to derive and export GH_CONFIG_DIR from AGENT_HOME
Provides a session dotfile ($AGENT_HOME/.env) that subsequent skills
can source to inherit GH_CONFIG_DIR.
2026-05-03 18:12:37 -04:00
Chris Farhood 4f32fac49b Revert "fix(github-app-token): expand unexpanded $VAR in GH_CONFIG_DIR with injection guard"
This reverts commit f7a65e153c.
2026-05-03 18:05:37 -04:00
Chris Farhood f7a65e153c fix(github-app-token): expand unexpanded $VAR in GH_CONFIG_DIR with injection guard
When GH_CONFIG_DIR is passed as a literal string like '$AGENT_HOME/.github'
(unexpanded by the caller), the script now detects this, validates the path
contains only safe characters, then uses eval to expand it to the real path.

Also removes the AGENT_HOME fallback — when GH_CONFIG_DIR is not set, the
script now lets gh use its default config directory (~/.config/gh) directly,
rather than failing or writing to a non-standard location.
2026-05-03 17:34:30 -04:00
Chris Farhood e48aafd324 feat: rename hightower skill to trebuchet
- Created trebuchet/SKILL.md with all Hightower content renamed to Trebuchet
- Renamed HIGHTOWER_API_URL -> TREBUCHET_API_URL and HIGHTOWER_API_TOKEN -> TREBUCHET_API_TOKEN
- Renamed hightower-api -> trebuchet-api in architecture docs
- Updated README.md to reference trebuchet instead of hightower

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-27 18:42:33 +00:00
Gandalf the Greybeard 71dc6e79a4 chore: remove hightower skill (moved to farhoodlabs/hightower)
The hightower skill is now maintained in the Hightower project repo at
farhoodlabs/hightower so the API-owning team controls its agent docs.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-23 14:01:08 +00:00
Goose b489688201 docs: elaborate Hightower skill and remove namespace hardcoding
- Add architecture overview explaining what Hightower is: AI pentest platform
  forked from KeygraphHQ/shannon, with hightower-api (Hono), Shannon workers
  in K8s Jobs, Temporal orchestration, and workspace PVC for reports
- Remove hardcoded `hightower` namespace from intro prose and example URL
  (the API URL comes from HIGHTOWER_API_URL env var; namespace is irrelevant)
- Add hightower to README index and CLAUDE.md skill list

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-22 00:20:10 +00:00
farhoodliquor-paperclip[bot] d182f3817d feat: add hightower pentest API skill 2026-04-22 00:03:07 +00:00
farhoodliquor-paperclip[bot] 3e68063bb0 remove empty blob 2026-04-22 00:02:59 +00:00
farhoodliquor-paperclip[bot] c11cbb5921 feat: add hightower pentest skill 2026-04-22 00:01:26 +00:00
Goose d133c47717 docs: include kubernetes-reflector skill in repo index
Origin added `kubernetes-reflector/` after the FAR-95 review follow-ups
were drafted; list it in root CLAUDE.md and README.md alongside the other
current skills.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-17 01:34:47 +00:00
Goose 8efb331334 refactor: apply FAR-95 skills review follow-ups
- Remove `playwright-ephemeral/` and `shannon/` entirely per board direction
- Fix `minimax-image-generation/SKILL.md` so YAML frontmatter is at line 1
- Add `minimax-image-generation/scripts/generate.sh` (argparse, error-checked, executable) and document invoking it via `bash scripts/generate.sh ...`
- Deduplicate `minimax-image-generation/CLAUDE.md` against SKILL.md
- `github-app-token`: write token to `$GH_CONFIG_DIR/.gh-token` (preferred) or `$AGENT_HOME/.gh-token` (fallback), fail loudly if neither is set instead of leaking to `mktemp`
- Refresh root `CLAUDE.md` to match actual directory contents and patterns
- Add root `README.md` with human-facing skills index

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-17 01:34:22 +00:00
Goose 97f4cd7d9b feat: support GITHUB_APP_PEM inline env var in github-app-token skill
Allow agents to provide the PEM key directly via GITHUB_APP_PEM env var
instead of requiring a file path via GITHUB_APP_PEM_FILE. The inline PEM
is written to a secure temp file (chmod 600) and cleaned up on exit.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-17 01:34:22 +00:00
Goose 569c77b1a9 revert: remove GH_CONFIG_DIR from github-app-token skill
Per board feedback, config isolation is the operator's responsibility.
Setting GH_CONFIG_DIR per-agent is handled outside the skill.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-17 01:34:22 +00:00
Goose 45faadc681 fix: isolate gh CLI config per agent to prevent token mixing
Set GH_CONFIG_DIR=$AGENT_HOME/.config/gh before gh auth login so
each agent writes to its own directory rather than the shared global
config. This prevents tokens from different agents bleeding into one
another's gh auth state.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-17 01:34:22 +00:00
Chris Farhood 5218aee586 chore: remove playwright-ephemeral skill
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 21:15:51 -04:00
Chris Farhood 3d38ba5a41 feat: add kubernetes-reflector skill for cross-namespace secret/configmap mirroring
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 21:13:38 -04:00
Goose 3563f311db refactor: replace github-app-token docs with executable script
Move token generation logic from inline SKILL.md code blocks into a
single scripts/generate-token.sh that agents can invoke directly.
Adds env var validation, error handling, and gh CLI auth in one step.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-15 11:21:34 +00:00
Goose e9d7232718 refactor: remove scripts from minimax-image-generation skill
Inline the API call example directly in SKILL.md instead of
providing a separate generate.sh script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 16:22:44 +00:00
Goose e9aa409790 feat: add minimax-image-generation skill for MiniMax image generation
Wraps the MiniMax /v1/image_generation API (model: image-01) as a Claude
Code skill. Pure bash implementation using curl + jq + base64.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:38:56 +00:00
Chris Farhood 8e5f135acd Delete playwright-ephemeral/SKILL.md 2026-04-10 18:09:15 -04:00
Goose 69604deafd feat: add MiniMax provider support to Shannon skill
Add MiniMax as a supported AI backend for Shannon pentesting via the
Anthropic SDK compatibility layer. MiniMax uses ANTHROPIC_AUTH_TOKEN +
ANTHROPIC_BASE_URL instead of ANTHROPIC_API_KEY.

- Add MiniMax credential detection in SKILL.md and setup script
- Add dedicated "Using MiniMax as AI Provider" section with setup guide
- Update env var table with MiniMax-specific variables
- Update frontmatter optionalEnv with new env vars

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-03 14:42:43 +00:00
Goose 1a6af44a73 feat: add shannon pentesting skill and AGPL-3.0 license
Copy the shannon skill from unicodeveloper/shannon into the Agent Skills
repo. Add proper full AGPL-3.0 license text to respect upstream licensing.
Update CLAUDE.md to document the new skill.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-02 13:54:37 +00:00
Goose 39b1d0abc2 feat: write github-app-token to per-agent file instead of env var
Replaces `export GH_TOKEN` with a file-based approach using
`$AGENT_HOME/.gh-token`. Each agent writes its token to its own
file path, avoiding env-var collisions when multiple agents
generate tokens concurrently.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 11:07:53 +00:00
Goose 5a272ed27c restore github-app-token skill docs, remove script
Keep SKILL.md with inline token generation commands and env var
docs. Delete the bundled generate_token.sh script — no backward
compatibility shims.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-31 17:50:42 +00:00
Goose 7c55d5c3ee remove github-app-token skill entirely
No backward compatibility — the script, SKILL.md, and all CLAUDE.md
references are deleted.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-31 17:47:04 +00:00
Goose 10c7015e2b fix: use skill-relative paths in github-app-token SKILL.md
Script paths used `./github-app-token/scripts/...` which assumed the
working directory was the repo root. When the skill is synced to
consuming agents, the runtime base directory is already inside the
skill folder, so the correct path is `./scripts/...`.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-27 18:03:57 +00:00
Goose ad8b82449a feat: add playwright-ephemeral skill for ephemeral browser provisioning
Adds a new skill that provisions ephemeral Playwright MCP browser
sessions as Kubernetes Jobs for E2E testing. Includes provision and
teardown scripts, K8s Job/Service YAML templates, and agent-facing
SKILL.md documentation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-27 14:02:42 +00:00
Goose eced9e1e35 docs: use explicit bash invocation in all SKILL.md examples
Agents report "not executable" errors when the skill files are
delivered without the executable bit preserved. Using `bash ./...`
instead of `./...` in all examples avoids this regardless of
file permissions in the consuming environment.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-27 11:40:36 +00:00
Goose b4d5d601b9 feat: add --raw flag to github-app-token and clean up docs
- Add --raw flag that prints only the token value (no export wrapper),
  making GH_TOKEN=$(./generate_token.sh --raw) the recommended pattern
  for AI agents and CI/CD.
- Clean up die() to only write to stderr (remove eval-safe stdout hack).
- Fix SKILL.md: correct step numbering, remove unused grep prerequisite,
  replace placeholder paths, lead with --raw usage, move eval to legacy.
- Update CLAUDE.md to reflect new --raw pattern.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-27 11:06:57 +00:00
Chris Farhood 7980dd06a0 docs: add CLAUDE.md and fix SKILL.md for cross-invocation shell usage
SKILL.md instructions now clarify that GH_TOKEN must be used in the
same shell invocation as the eval, with chained command examples.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 22:32:12 -04:00
Chris Farhood 9005f9bb45 Update github-app-token skill: refactor to generate_token.sh and update docs 2026-03-26 18:09:46 -04:00
Chris Farhood ff40d5f2d3 refactor: Consolidate error handling into a new die function. 2026-03-26 18:05:46 -04:00
Chris Farhood a020dc534d feat: Generate GitHub App installation access tokens directly via a new script and update documentation. 2026-03-26 15:24:36 -04:00
Chris Farhood 964cc0de00 fix: use user-provided JWT generation logic
Replaced my bash implementation with the user's provided snippet.
Key differences that fix the bad credentials issue on macOS:
1. Uses openssl enc -base64 -A instead of openssl base64
2. Uses jq -r -c . to strictly format the JSON header/payload
3. Explicitly wraps the RSA signature binary in b64enc.
2026-03-25 22:19:02 -04:00
Chris Farhood dedb35953b refactor: rewrite JWT generation from python to bash
Replaced generate_jwt.py with generate_jwt.sh using only openssl and
coreutils. Updated SKILL.md to remove the python fallback section and
use grep/cut for JSON parsing instead of python3.
2026-03-25 21:46:02 -04:00
Chris Farhood f425b5191e fix: rewrite openssl signing to use file path directly
The previous implementation had a stdin conflict -- it passed the PEM
key on stdin but also needed to pass the unsigned data on stdin. Now
that we take a file path, openssl reads the key from the file and gets
the data to sign from stdin.

Also removed the dead-code tempfile fallback and unused hashlib import.
2026-03-25 21:34:11 -04:00
Chris Farhood 1b7356c61d feat: add github-app-token skill 2026-03-25 21:29:22 -04:00