Commit Graph
15 Commits
Author SHA1 Message Date
Michael Sitarzewski 6ec263ae19 Reapply "test(install): add a regression suite for install.sh + CI on Linux and macOS (#772)" (#827)
This reverts commit 4bab3cf4a2.
2026-09-02 22:26:42 -05:00
Michael Sitarzewski 4bab3cf4a2 Revert "test(install): add a regression suite for install.sh + CI on Linux and macOS (#772)" (#827)
This reverts commit 1e2d1b940e.
2026-09-02 20:51:43 -05:00
Sergio Romero 1e2d1b940e test(install): add a regression suite for install.sh + CI on Linux and macOS (#772)
* test(install): add a regression suite for install.sh + CI on Linux and macOS

install.sh is the largest script in the repo and has no tests. Every install
bug so far has been a silent one — agents copied to the wrong directory, a
path with a space split in two, a filter that installed everything — and the
only signal was a user noticing later.

scripts/test-install.sh pins the installer's observable contract:

  * destinations: default $HOME/.claude/agents, --path override, tool env var
    override, and --path winning over the env var
  * selection: --division, --agent, --agents-file (comments/blank lines)
  * --dry-run writes nothing; unknown --tool exits non-zero
  * --link produces symlinks; a second run installs the same set, not dupes
  * a destination containing spaces stays one directory

Expected counts are derived from divisions.json + lib.sh at runtime, so the
suite doesn't need updating when agents are added. Every case runs with HOME
pointed at a throwaway sandbox, so a broken default path can never write into
the real config. bash 3.2 + BSD userland, no new dependencies.

Verified it fails on the regressions it claims to catch: unquoting install_file
fails only the spaces case, neutering slug_allowed fails the four selection
cases, un-short-circuiting --dry-run fails the dry-run case, and ignoring the
env var in resolve_dest fails the env-override case.

CI runs it on ubuntu-latest and macos-latest (macOS ships bash 3.2, Linux
ships bash 5) plus bash -n over every script in scripts/.

* test(install): pin the parallel worker argument regression (#755)

Review feedback: the existing "paths with spaces" case selects a single tool,
so it stays on the serial path and never reaches the worker spawn where #755's
bug lives. Adds a case that does.

  --tool claude-code,copilot --parallel --jobs 1 --agents-file <spaced path>
  --path "<home>/My [Agents]/dest dir"

with a serial control immediately before it (same two tools, same spaced and
globbed --path, no --parallel) so a failure is attributable to the worker
hand-off rather than to the selection filter.

Marked xfail rather than a hard assertion: it fails on main today and passes
with #755 applied, and encoding a known-broken case as a hard failure would
turn CI red for reasons unrelated to whatever PR is being reviewed. xfail
never fails the suite; when the case starts passing it prints a note to
promote it to assert_eq (one-word edit). Measured on macOS bash 3.2.57:
main -> 25 passed / 1 xfail, #755 applied -> 26 passed / 0 failed, both
deterministic over repeated runs.

Note on --jobs 1: workers are still spawned through the same xargs/sh
hand-off, so argument propagation is exercised in full. Serializing them
keeps a second, unrelated defect out of this case — with two workers running
concurrently against one shared --path, the parent exits non-zero on ~3 runs
in 5 once the workers actually copy anything (one worker's cp fails with
ENOENT on the shared destination). That race is invisible on main only
because the workers currently install nothing at all; --jobs 1 or per-tool
destinations are clean. Reported in the PR discussion.
2026-09-02 20:48:48 -05:00
Michael SitarzewskiandClaude Opus 4.8 384dbbd2a8 docs: add tool-integration checklist + stop hardcoding roster counts (#663)
Two related drift traps, both from hand-typed numbers/lists that no guard
watches:

1. CONTRIBUTING had no "how to add a tool" checklist, and its wording
   ("all output is gitignored") implied gitignoring was automatic — so
   tool contributors kept committing generated integrations/<tool>/ output.
2. The division set and agent/division counts were hardcoded in prose in
   several places and had already gone stale (CONTRIBUTING said "16" and
   omitted healthcare; EXECUTIVE-BRIEF said "9 divisions").

Changes:
- Add an "Adding a Tool Integration" checklist to CONTRIBUTING (discuss-first,
  reuse an existing `format`, the ~5-file touch list incl. the required
  .gitignore rule, run check-tools.sh). Harmonize the "committed build
  output" policy line to point at it.
- De-hardcode the division list in CONTRIBUTING — defer to divisions.json.
- Stop scattering roster counts: strategy/EXECUTIVE-BRIEF ("9 divisions") and
  check-agent-originality.sh ("184-agent library") drop the number entirely;
  README keeps a showcase stat but softens "232 across 16" to "230+ across
  every division" so it never becomes a lie as the roster grows.


Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:45:36 -05:00
Michael SitarzewskiandClaude Opus 4.8 f56a217945 Add Osaurus tool target + document the division contract (#603)
Tooling: add Osaurus (Anthropic Agent-Skills SKILL.md format) as a conversion
and install target, wired into convert.sh (convert_osaurus + dispatch/valid/all/
parallel lists, --osaurus flag) and install.sh (detect/label/dest/install_osaurus
+ dispatch). Generated output lands in integrations/osaurus/agency-*/SKILL.md and
is gitignored like every other tool's output (regenerate via convert.sh osaurus).

Docs/guardrails — make the division contract discoverable, since it lived only
in scattered script comments and tripped up multiple contributors:
- CONTRIBUTING.md: complete the division list to all 16 (was missing academic/
  gis/sales) and document that divisions.json is the source of truth (CI-checked
  by check-divisions.sh), how to propose a new division, and that strategy/
  (NEXUS playbooks) and integrations/ (generated output) are NOT divisions.
- install.sh: correct the stale "sync with convert.sh / lint-agents.sh" comment —
  install.sh intentionally keeps strategy/ in AGENT_DIRS (filtered at scan time),
  so it is deliberately NOT the same set as the other two.
- .gitignore: ignore integrations/osaurus/agency-*/ (the osaurus output was the
  one tool whose generated files weren't excluded).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 15:45:50 -05:00
8237f99b85 feat: add Security division (resolves RFC #438) (#566)
New security/ division: 6 new agents (#223, #326) + 4 relocated; differentiated Security Architect; 209 agents / 15 divisions. Closes #223, #326.

Co-Authored-By: anonym88-ai <anonym88-ai@users.noreply.github.com>
Co-Authored-By: caveat-ops <caveat-ops@users.noreply.github.com>
2026-06-04 16:55:28 -05:00
Yunus Kılıç 620a061a90 feat: add Codex agent conversion and install support (#362)
Adds Codex as a conversion/install target: each agent → `~/.codex/agents/<slug>.toml` with the three required Codex fields (name, description, developer_instructions).

Validated: all 184 agents generate valid, parseable TOML (incl. 21k-char agents with embedded code blocks) via the PR's TOML basic-string escaper. Matches OpenAI's documented custom-agent schema.

Thanks @yunuskilicdev.
2026-06-03 18:59:48 -05:00
Michael SitarzewskiandClaude Opus 4.8 5032f7e75c feat: add agent originality check (script + CI + docs) (#560)
Adds scripts/check-agent-originality.sh, which flags new agents that
substantially duplicate an existing one. It compares each candidate
against the whole roster (and other files in the same change set) using
entity-neutralized 8-word shingle overlap, so a find-replace "re-skin"
that only swaps a country/platform name can't slip past review.

- CI: new "Check agent originality" step in lint-agents.yml runs it on
  changed agent files; a >=40% match fails the build.
- Docs: CONTRIBUTING.md gains a self-run "before submitting" step, a
  checklist item, and a "things we'll always close" bullet for re-skins.

Calibration: across the existing 184-agent library the worst same-pair
similarity is ~1.5% (median 0%), so the WARN >=20% / FAIL >=40% defaults
leave a wide margin against false positives.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 12:08:28 -05:00
Michael Sitarzewski e73f4019ae fix: add finance/ to scripts, CI, README, and CONTRIBUTING.md (#437)
Adds finance/ to AGENT_DIRS in all 3 scripts, CI workflow trigger paths, CONTRIBUTING.md category list, and README.md division roster. Also fixes duplicate sales entry in lint-agents.sh.
2026-04-11 01:14:35 -05:00
Michael SitarzewskiandClaude Opus 4.6 82ba7f4887 Add PR scope guidelines to CONTRIBUTING.md
Clarify what belongs in a PR vs. a Discussion — agent files are always
welcome, but tooling/architecture/bulk changes should start as a
Discussion first. Committed build output will always be closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 18:15:32 -05:00
Spencer Poisseroux d02b2314e1 Update CONTRIBUTING categories for current directories 2026-03-13 15:53:57 -04:00
Prasad Muley 1a0d029e1b Add Qwen Code support to convert.sh and install.sh
- Add convert_qwen() to scripts/convert.sh for generating Qwen SubAgent .md files
- Add install_qwen() to scripts/install.sh for installing to .qwen/agents/ (project-scoped)
- Add qwen detection, tool label, and install cases
- Update README.md with Qwen in supported tools table + usage section
- Add integrations/qwen/agents/ to .gitignore + create .gitkeep
- Add Qwen Code compatibility note to CONTRIBUTING.md
- Preserve tools: field in Qwen output when present in source agents
- Fix interactive installer to show dynamic [1-N] toggle range
- Update README roadmap checklist to include Qwen Code

Qwen SubAgents use minimal YAML frontmatter (name, description) with optional tools: field preserved from source. Body content passes through unchanged.
Tested with 120 agents — all convert and install successfully.
2026-03-11 23:02:10 -04:00
Michael SitarzewskiandClaude Opus 4.6 6d58ad4c0a Add OpenClaw integration, emoji/vibe frontmatter, services field, and AP agent cleanup
OpenClaw support:
- Add section-splitting convert_openclaw() to convert.sh that routes
  ## headers by keyword into SOUL.md (persona) vs AGENTS.md (operations)
  and generates IDENTITY.md with emoji + vibe from frontmatter
- Add integrations/openclaw/ to .gitignore

Frontmatter additions (all 112 agents):
- Add emoji and vibe fields to every agent for OpenClaw IDENTITY.md
  generation and future dashboard/catalog use
- Add services field to carousel-growth-engine (Gemini API, Upload-Post)
- Add emoji/vibe to 7 new paid-media agents from PR #83

Agent quality:
- Rewrite accounts-payable-agent to be vendor-agnostic (remove AgenticBTC
  dependency, use generic payments.* interface)

Documentation:
- CONTRIBUTING.md: Add Persona/Operations section grouping guidance,
  emoji/vibe/services frontmatter fields, external services editorial policy
- README.md: Add OpenClaw to supported tools, update agent count to 112,
  reduce third-party OpenClaw repo mention to one-line attribution

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:20:10 -05:00
04cb f85dbdd4fa Fix docs: GitHub links in CONTRIBUTING.md 2026-03-04 08:13:03 +08:00
Michael Sitarzewski 98eea4c139 Initial commit: The Agency - 51 AI Specialist Agents
Complete collection of specialized AI agent personalities:
- 7 Engineering specialists (Frontend, Backend, Mobile, AI, DevOps, etc.)
- 6 Design specialists (UI, UX, Brand, Whimsy, etc.)
- 8 Marketing specialists (Growth, Content, Social Media, etc.)
- 3 Product specialists (Sprint Planning, Research, Feedback)
- 5 Project Management specialists
- 7 Testing specialists (QA, Performance, API, etc.)
- 6 Support specialists (Analytics, Finance, Legal, etc.)
- 6 Spatial Computing specialists (XR, AR/VR, Vision Pro)
- 3 Specialized agents (Orchestrator, Data Analytics, LSP)

Each agent includes:
- Distinct personality and communication style
- Technical deliverables with code examples
- Step-by-step workflows
- Success metrics and benchmarks
- Real-world tested approaches

Ready for community contributions and feedback!
2025-10-13 07:17:29 -05:00