Commit graph

103 commits

Author SHA1 Message Date
Alireza Rezvani
09709247d1
Merge pull request #721 from alirezarezvani/claude/cleanup-718-followups 2026-05-23 03:41:43 +02:00
Claude
f5f6ee46bf
feat(code-reviewer): deliver C# / .NET implementation behind PR #723 docs
PR #723 added C# / .NET claims to SKILL.md but did not update the scripts
or references. This wires up the actual implementation so the documented
behavior matches reality.

scripts/code_quality_checker.py:
- add "csharp": [".cs", ".csx", ".razor", ".cshtml"] to LANGUAGE_EXTENSIONS
  (fixes argparse error on --language csharp)
- add C# function, class, and method regex patterns
- add check_csharp_specific_smells(): async void, blocking on Task
  (.Result/.Wait/.GetAwaiter().GetResult()), swallowed Exception,
  undisposed IDisposable, new HttpClient() in method body, missing
  await on *Async() calls, unused using directives

scripts/pr_analyzer.py:
- extend hardcoded_secrets to catch connection strings
- extend console_log to catch Debug.WriteLine
- extend disable_eslint -> analyzer_disable to catch #pragma warning
  disable and [SuppressMessage]
- extend any_type -> loose_type to catch C# dynamic
- extend sql_concatenation to catch FromSql/ExecuteSql interpolation
- add csharp_unsafe_block (both block and modifier forms)
- add csharp_null_forgiving (!. operator overuse)
- add csharp_async_void
- add csharp_blocking_async

references/coding_standards.md:
- add C# / .NET Standards section: nullable reference types,
  async/await, exception handling, IDisposable, LINQ, dependency
  injection, records + pattern matching, ASP.NET Core security

references/common_antipatterns.md:
- add C# / .NET Antipatterns section: async void, blocking on async,
  swallowing Exception, undisposed IDisposable, new HttpClient() in
  method, missing ConfigureAwait in libraries, mutable public setters,
  dynamic overuse, unjustified analyzer suppression

SKILL.md: add trailing newline (fixes "No newline at end of file" warning).

Verified: code_quality_checker fires all 8 documented C# smell categories
on a fixture; pr_analyzer fires all 8 risk patterns on the same diff;
Python and TypeScript regression checks pass.
2026-05-23 01:35:06 +00:00
SAIDY-EXTERNAL Fouad
946eb4ee0f update code_quality_checker command documentation 2026-05-21 18:04:13 +01:00
SAIDY-EXTERNAL Fouad
f510ce37d5 add support for .net, C# to languages to be reviewed 2026-05-21 17:56:17 +01:00
Claude
5954dfcce1
cleanup(engineering): address remaining 7 polish items from PR #718 bot review
Bundle of low-medium-severity follow-ups that were deferred when PR #720
landed the 3 blocking bugs. None of these silently break correctness —
they're discoverability, consistency, and convention gaps.

Bugs / code-quality:

1. fullstack_decision_engine.py: asymmetric cadence matching
   `inputs.cadence in target or target in inputs.cadence` produced
   asymmetric results — "per-pr" matched "per-pr-with-gates" but not
   vice versa. Profile cadences are intentional alternatives joined
   by "-or-" (e.g. "weekly-or-on-demand" → {weekly, on-demand}); now
   parsed explicitly with "-with-..." modifier suffixes stripped.

   Verified:
     cadence=per-pr → matches per-pr, per-pr-with-gates, daily-or-per-pr
     cadence=daily  → matches daily-or-per-pr (only)
     cadence=on-demand → matches weekly-or-on-demand

2. fullstack_decision_engine.py: rename weight_total/weight_matched
   to w_total/w_matched. Backend and frontend engines already use the
   short form; this aligns the three files as a family.

3. sync-gemini-skills.py: 3-way name collision in dedup logic
   The naive `if name in seen_names: name = parent-name` handled one
   collision but not two. Three "status" skills under "skills" parent
   dirs produced two entries both named "skills-status". Now suffixes
   with -2, -3, ... so each entry has a unique index name. Eliminates
   the duplicate-name ambiguity surfaced when checking PR #713.

Discoverability:

4. senior-fullstack/SKILL.md: surface fullstack_decision_engine.py in
   the labeled "Tools" section at the top. Previously only mentioned
   inline in the body (5 references buried in the Stack Decision Matrix
   section); not findable when scanning the SKILL.md.

Conventions / v2.8.0 compliance:

5. commands/cs-{fullstack,backend,frontend}-review.md: add explicit
   "## Forcing-question library" section header per the v2.8.0
   convention. Each lists the 7 questions inline with a pointer to
   the canonical reference file.

6. agents/engineering/cs-{fullstack,backend,frontend}-engineer.md:
   alphabetize the specialist list in the description field (annotated
   that workflow body order remains dependency-driven). Makes the
   three agent descriptions consistent as a family.

7. agents/engineering/cs-{backend,frontend}-engineer.md: promote the
   "Cross-agent invocation" content out of Workflow 3 into a dedicated
   "## When invoked as fork target" section with an explicit question-
   skip table per parent agent (cs-fullstack-engineer, cs-cto-advisor,
   cs-vpe-advisor, cs-ciso-advisor for backend; cs-fullstack-engineer,
   cs-content-creator, cs-product-manager for frontend). Closes the
   cross-agent contract gap the bot flagged.

Not changed:

- CLAUDE.md plugin-schema section (already corrected in #715; bot's
  "stale text" claim was incorrect — it was reading the cumulative diff)
- Workflow body specialist order (intentional dependency order; would
  break the SLO-first → API → DB → migration → observability sequence)

Verification:
- All 3 decision engines: --sample → exit 0
- Cadence matching: 3 test cases pass cleanly
- check_plugin_json.py --all → 0 FAIL, 0 WARN, 69 OK
- sync-gemini-skills.py → 392 unique names (was 391 unique / 1 dupe)
2026-05-21 13:47:08 +00:00
Claude
472f0ace5c
fix(engineering): resolve 3 bugs in senior-backend + senior-frontend decision engines
Addresses claude[bot] code review findings on PR #718.

1. backend_decision_engine.py: scoped language-preference match
   Previous code serialized the entire profile dict to JSON and ran a
   substring search, so --language-preference=go false-matched against
   "django", "mongo", etc. New approach tokenizes profile_name +
   stack.language + stack.runtime on '-' and checks exact membership.

   Verified:
     - language=go    → matches go-or-rust-microservice only
     - language=python → matches django-monolith + fastapi-python only
     - language=typescript → matches node-express only

2. frontend_decision_engine.py: removed dead pass-block kill check
   `if team_size in 4..10 and read_write_ratio >= 50: pass` was a no-op
   with an unclear intent comment. Removed.

3. frontend_decision_engine.py: wired up unused inp_target_ms field
   The field was declared on Inputs, exposed via --inp-target-ms, and
   threaded through main() but never consulted by any kill criterion.
   Added a kill check that mirrors the existing LCP one:
     "mobile-4g primary with INP target Xms: tighten to < 200ms"
   (Web Vitals 'good' threshold for INP is 200ms; 'poor' is 500ms.)

Verification:
- backend_decision_engine.py --sample → exit 0
- frontend_decision_engine.py --sample → exit 0
- fullstack_decision_engine.py --sample → exit 0 (untouched)
2026-05-21 12:56:19 +00:00
Alireza Rezvani
83464b7b95
Merge pull request #715 from alirezarezvani/claude/review-pr-714-3ASwU 2026-05-21 12:27:19 +02:00
Claude
8fd3155868
fix(plugin-schema): align with live Claude Code spec — migrate to "./"-prefixed skills field
Resolves #712 and #714.

Claude Code's plugin spec (code.claude.com/docs/en/plugins-reference) requires
"All paths must be relative to the plugin root and start with ./". CC 2.1.144+
rejects the bare "skills" form with `Validation errors: skills: Invalid input`,
breaking plugin installs from this repo.

Changes:
- 47 plugin.json manifests migrated from "skills": "skills" → ["./skills"]
  (canonical post-CC 2.1.144 form, also accepts string "./skills")
- scripts/check_plugin_json.py rewritten to enforce the live spec:
  * Hard-fails on non-"./"-prefixed strings (except the legacy "skills" literal)
  * Hard-fails on empty strings/arrays and non-string array entries
  * Emits WARN (non-fatal) on the legacy "skills" literal as a safety net
    for copied templates — the WARN tolerance can be removed later
  * Tested against all four canonical forms + 3 garbage forms
- CLAUDE.md §5 rewritten to document the live spec, including the historical
  context of the v2.1.107 → v2.1.144 regression window that's now closed
- 15 stale broken symlinks under .gemini/skills/ removed (orphans from older
  reorgs that the sync script didn't prune because its cleanup is disabled)

Verification:
- scripts/check_plugin_json.py --all → 0 FAIL, 0 WARN, exit 0 (69 files OK)
- pytest tests/ → 2103 passed
- find . -type l ! -exec test -e {} \; → 0 broken symlinks
- Live spec forms tested: ["./"], ["./skills"], "./skills", ["./a","./b"] all pass
- Garbage forms rejected: bare "./", empty array, non-string entries, plain strings
2026-05-21 07:03:11 +00:00
Claude
2c5a793128
feat(engineering): apply karpathy-coder + Matt Pocock to fullstack/frontend/backend
Audit findings:
- senior-fullstack / senior-frontend / senior-backend SKILL.md files were
  generic role catalogs with no opinionated workflow, no customization
  surface, and no cross-agent invocation contract.
- A 4-person SaaS startup and a 200-engineer enterprise read identical
  recommendations.
- Other agents/skills had no typed surface to orchestrate fullstack /
  frontend / backend lenses.

Per-skill additions (21 new files: 7 x 3 skills):
- scripts/<role>_decision_engine.py - stdlib-only deterministic profile
  picker. Refuses to recommend without Karpathy-#1 core assumptions.
  Surfaces kill criteria. Names human approver chain (never auto-approves).
- profiles/*.json x 4 per skill (12 total) - JSON customization surface.
  Users copy one to <your-org>.json to override defaults.
- references/forcing_questions.md - 7 Matt Pocock forcing questions per
  skill (21 total) with recommended answer + canon citation + kill criterion.
- references/composition_map.md - explicit routing into POWERFUL-tier
  specialists (api-design-reviewer, database-designer, slo-architect,
  performance-profiler, a11y-audit, epic-design, apple-hig-expert, etc.).

Three orchestrator agents (context: fork):
- agents/engineering/cs-fullstack-engineer.md
- agents/engineering/cs-frontend-engineer.md
- agents/engineering/cs-backend-engineer.md
Invokable by other agents via Agent(subagent_type="cs-<role>-engineer", ...).

Four slash commands:
- /cs:fullstack-review, /cs:frontend-review, /cs:backend-review
- /cs:engineer-grill - cross-role 21-question forcing-question runner

Augmented SKILL.md files (additive only - Karpathy #3 surgical):
Each gained 5 new sections: Assumptions & Verifiable Success Criteria
(Karpathy #1+#4), Customization profiles, Composition map, Forcing-question
library, Invocation from other agents and skills.

Verification:
- 12/12 profile JSON files parse cleanly
- 3/3 decision engines pass --help and --sample, exit 0
- 3/3 cs-* agents have valid YAML + context: fork
- 3/3 agent paths resolve from agents/engineering/
- 3/3 commands reference the correct cs-* agent
- 69/69 plugin.json files pass check_plugin_json.py
- Existing SKILL.md content unchanged (additive edits only)

Versions: engineering-team plugin 2.2.3 -> 2.8.1; marketplace entry 2.8.1.

https://claude.ai/code/session_01UyWs4rKccdxUWFcWi6Y8Ly
2026-05-20 07:24:21 +00:00
Alireza Rezvani
daa88bb299
Merge pull request #689 from alirezarezvani/claude/fix-issue-686-5zYHm 2026-05-19 05:44:39 +02:00
Claude
663bc8afa2
fix(plugin.json): drop "./" prefix from skills field to clear /doctor warning (#686)
Claude Code 2.1.133+ rejects "skills": "./skills" with a "Path escapes
plugin directory" warning, even though ./skills resolves to a valid
subdirectory inside the plugin root. Per the upstream docs example, the
correct value is "skills" (no ./ prefix), which works across all CC
versions and other tools (Codex, Gemini CLI, etc.).

Applied to all 47 plugin.json files that used "./skills"; updated
CLAUDE.md ClawHub publishing constraints to document the new convention
and reference the issue.
2026-05-19 03:43:34 +00:00
Artemii Fridriksen
5fa5150060 fix(engineering-team): make inspect-assets.py --help work without Pillow
Move PIL import from module-level to inside analyse_image() so argparse
help text displays without requiring Pillow installed. Add proper argparse
with --json support per project conventions.

Fixes #653
2026-05-17 18:23:53 -04:00
Claude
1b152ab675
fix(v2.6.2): fix remaining 11 placeholder descriptions
Continues the v2.6.1 cleanup (PR #647). Fixes the final 11 placeholder
descriptions identified in the audit — skills whose description field was
literally just the skill name from a v2.0.0 batch import.

Skills fixed across 4 domains:

c-level-advisor (executive-mentor):
- executive-mentor/skills/challenge — pre-mortem plan analysis ("imagine
  it's 12 months from now and this plan failed")
- executive-mentor/skills/board-prep — adversarial board meeting prep

engineering (POWERFUL tier):
- git-worktree-manager — parallel feature work with Git worktrees
- skill-tester — meta-skill QA (structure + script + quality scoring)
- monorepo-navigator — Turborepo / Nx / pnpm / Lerna navigation
- env-secrets-manager — env-var hygiene + secrets rotation
- agent-workflow-designer — production-grade multi-agent workflows

engineering-team:
- incident-commander — incident response framework (detection → resolution)
- email-template-builder — React Email + provider integration (Resend,
  Postmark, SendGrid, AWS SES)
- stripe-integration-expert — subscriptions, webhooks, billing patterns

business-growth:
- contract-and-proposal-writer — jurisdiction-aware business documents
  (US/EU/UK/DACH; contracts, SOWs, NDAs, MSAs)

Each new description: ≤1024 chars, third person, action verb in first
sentence, "Use when ..." trigger in second sentence per Matt Pocock's rule.

All 11 descriptions PASS or WARN on skill_description_validator.py:
- 6 PASS: git-worktree-manager, skill-tester, monorepo-navigator,
  env-secrets-manager, incident-commander, email-template-builder
- 5 WARN: challenge, board-prep, agent-workflow-designer,
  stripe-integration-expert, contract-and-proposal-writer (warnings
  from other rules — SKILL.md > 100 lines, terminology drift — not
  the description itself)

Cumulative impact across v2.6.0 → v2.6.1 → v2.6.2:
- PASS:           4 (1%) → 7 (2%) → 9 (3%)        [+5]
- WARN:         111      → 134     → 137           [+26]
- FAIL:         183      → 157     → 152           [-31]
- Missing-trigger: 119   → 79      → 68            [-51]

31 skills total lifted from FAIL → WARN/PASS across v2.6.1 + v2.6.2.

Audit baseline preserved at 298 real skills (excludes auto-generated
.gemini/.codex/.cursor/.cline bundles and template fixtures).

Next cleanup target (v2.6.3 candidate): the 27% terminology-consistency
drift (agent/bot, skill/tool mixing) — bigger scope, requires careful
prose edits per file.

https://claude.ai/code/session_01VFreMf7XLBqMgjsrG4wSYe
2026-05-14 05:08:23 +00:00
Claude
bbe65c0936
docs: polish nav + clear 33 mkdocs INFO warnings
Two small polish tasks ahead of any future Pages deploy.

1. Add /cs:* command nav entries (22 new entries)

The 21 c-level-agents-* sub-skill pages now exist (since #632) but weren't
surfaced in mkdocs.yml sidebar nav. Added a "Founder-Mode Commands" nested
section under C-Level Advisory with:
  - c-level-agents index
  - 10 forcing-question reviews (/cs:cfo-review through /cs:vpe-review)
  - 5 strategic sprint pipeline commands (brief/boardroom/decide/execute/post-mortem)
  - 4 meta+safety commands (founder-mode/onboard/cross-eval/freeze)
  - /cs:office-hours

2. Clear 33 mkdocs INFO warnings

mkdocs build was emitting 33 INFO-level warnings during the docs deploy.
Pre-existing noise; not regressions. Three categories:

a) 27 unrecognized-link warnings: relative links like `[Skills](skills/)`
   that mkdocs flags because the path doesn't end in .md. Fix: added
   explicit `index.md` suffix in 3 manual doc files.
     - docs/index.md: 15 links
     - docs/skills/index.md: 11 links
     - docs/custom-gpts.md: 1 link

b) 2 anchor warnings in scrum-master TOC: links pointed to
   `#analysis-tools--usage` and `#key-metrics--targets` (double hyphen
   from ampersand) but mkdocs Material's slugify produces single-hyphen
   slugs. Fix: changed to `#analysis-tools-usage` and `#key-metrics-targets`.

c) 4 anchor warnings in senior-computer-vision + senior-data-engineer TOCs:
   links pointed to non-existent sections.
   - senior-computer-vision: `#common-commands` TOC entry — no such heading
     anywhere; removed the entry.
   - senior-data-engineer: 3 sub-bullets pointing to `#workflow-1-...`,
     `#workflow-2-...`, `#workflow-3-...` — no such headings (only a
     parent `## Workflows`); removed the sub-bullets.

Verification:
- mkdocs build now emits 0 INFO warnings
- karpathy diff_surgeon: 0 findings on staged diff
- All 22 new nav entries verified to point to existing HTML pages
- generate-docs.py re-run picked up the upstream SKILL.md fixes; docs/skills/
  now matches sources

10 files changed, +54/-39. After the next dev->main release, the Pages
deploy will have:
- Cleaner build output (no INFO noise)
- Fully discoverable /cs:* command pages in the sidebar nav

https://claude.ai/code/session_012WtZMm5NJHqkYoRqA9fHMN
2026-05-13 14:14:45 +00:00
Claude
5c6410e2a7
docs(threat-detection): add AV false-positive banner to hunt-playbooks
Bitdefender (and similar heuristic AV/EDR products) quarantine the
hunt-playbooks reference because it lists the command-line patterns
associated with LOLBin abuse (certutil -decode, regsvr32 /s /u /i:http
scrobj.dll, mshta URL, etc.). The strings appear inside markdown
tables and cannot execute from a .md file — this is defensive
threat-hunting documentation.

Added a banner at the top that:
- States the defensive-doc intent explicitly
- Lists the binaries cited and why they appear
- Tells affected users how to allow-list the path
- Links to the tracking issue

Closes #533
2026-05-11 13:14:46 +00:00
Claude
b69842562a
fix(self-improving-agent): forbid reserved 'claude'/'anthropic' fragments in generated names
The /si:extract command and its skill-extractor agent had no guard
against the Claude Code skill-spec reserved name fragments. Users
reported the agent autogenerating skills like 'claude-code-settings',
'claude-mcp-tools', etc. — all of which violate the spec.

- Add explicit reserved-fragment rule to both the slash-command
  SKILL.md and the agent definition.
- Recommend the 'cc-' prefix for Claude Code-specific skills
  (cc-settings, cc-maintenance, cc-mcp-tools).
- Add the check to both quality-gate checklists so the agent
  surfaces a rename before writing files.

Closes #537
2026-05-11 13:14:39 +00:00
Claude
b5967f11f4
docs: update CLAUDE.md + README.md to v2.4.4 (post-promotion sync)
- Root CLAUDE.md: bump v2.3.0 -> v2.4.4, add Reliability Portfolio
  highlights (slo-architect, chaos-engineering, kubernetes-operator,
  feature-flags-architect, ship-gate, Atlassian Remote MCP).
- Root README.md: badges (Skills 235->188, Agents 28->30, Commands
  27->33), tagline, skills overview table per domain.
- Domain CLAUDE.md updates:
    project-management 6 -> 9 (Atlassian MCP bundled)
    ra-qm-team 13 -> 14 (SOC 2)
    business-growth 3 -> 5
    finance 2 -> 3 (business-investment-advisor)
    engineering-team 36 -> 32 (post-restructure dedup)
    product-team 16 -> 13
2026-05-10 07:20:51 +00:00
Claude
6457f60fc8
chore(marketplace): correct skill counts in domain manifests + root marketplace
Drift: docs+manifests had been pinned to v2.3.0 numbers (235 skills,
314 tools, 435 refs, 28 agents, 27 cmds) while main shipped slo-architect
(Phase 4), ship-gate, and the rest of the v2.4.x reliability portfolio.

Updated to canonical codex-sync counts:
  188 skills | 359 tools | 485 references | 30 agents | 33 commands

Per-domain plugin.json description counts now match:
  business-growth 4 -> 5    project-management 6 -> 9
  ra-qm-team 12 -> 14       engineering-team 36 -> 32
  engineering 50 -> 40      product-team 16 -> 13
2026-05-10 07:20:42 +00:00
Sobro inc.
571b5921dd fix(agents): add maxTurns + skills + narrow tools per spec completeness
Karpathy-style review of commit 3806b9b (the prior PR commit) caught real
issues that I missed: agents weren't fully equipped per the optional but
recommended fields in the official sub-agents spec.

Changes:
- engineering/agenthub/agents/hub-coordinator.md: narrow Bash(node *) (too
  broad per defense-in-depth) -> moved node into disallowedTools; add
  maxTurns: 100 (orchestrators run long); add skills: agenthub:agenthub
  (preload the plugin's own guidance into agent context)
- engineering-team/self-improving-agent/agents/memory-analyst.md:
  add maxTurns: 30 to bound runaway analysis loops
- engineering-team/self-improving-agent/agents/skill-extractor.md:
  add disallowedTools (rm/curl/wget) — agent has Write+Edit so defense-in-
  depth applies; add maxTurns: 30
- engineering/karpathy-coder/agents/karpathy-reviewer.md: fix skills field
  format from path-style "engineering/karpathy-coder" to spec-correct
  namespaced name "karpathy-coder:karpathy-coder" (the path syntax is the
  cs-* orchestrator template convention; the official sub-agents spec uses
  skill names per code.claude.com/docs/en/sub-agents); add maxTurns: 30

All 6 plugin agents (4 here + 2 in playwright-pro from prior commit) +
the 1 user agent (tech-ingester) now have name + description + tools +
disallowedTools (where write-capable) + model + maxTurns. The skills:
field is set on agents that benefit from preloaded domain skill content.

Functional smoke tests post-fix:
- memory-analyst: PASS (2 turns, 25s, 24K tokens, found 1 real orphan)
- skill-extractor: PASS (0 tool uses, 34s, 17K tokens, generated correct
  plan staying read-only with new disallowedTools in effect)
- karpathy-reviewer: PASS (verified in prior session, 28 tool uses)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 23:05:34 -04:00
Sobro inc.
3806b9b723 fix(agents): add missing YAML frontmatter and modernize tool fields
Per https://code.claude.com/docs/en/sub-agents, agents require YAML
frontmatter with name + description, and the field is `tools:` not
`allowed-tools:` (deprecated). Bare `Bash` allows any command including
curl/wget/rm, which violates defense-in-depth.

Changes:
- engineering/agenthub/agents/hub-coordinator.md: add full frontmatter
  (name, description, tools allowlist for git/python/node/Agent,
  disallowedTools for rm -rf / curl / wget / git push --force, model)
- engineering-team/self-improving-agent/agents/memory-analyst.md:
  add frontmatter, read-only tools (Read, Glob, Grep)
- engineering-team/self-improving-agent/agents/skill-extractor.md:
  add frontmatter, write tools (Read, Write, Edit, Glob, Grep)
- engineering-team/playwright-pro/agents/test-architect.md:
  rename allowed-tools to tools, add model: inherit
- engineering-team/playwright-pro/agents/migration-planner.md:
  same rename
- engineering-team/playwright-pro/agents/test-debugger.md:
  rename + narrow bare Bash to npx playwright / node / npm patterns,
  add disallowedTools for rm / curl / wget / destructive git
- engineering/karpathy-coder/agents/karpathy-reviewer.md:
  narrow bare Bash to git read-ops + python, add disallowedTools

All registered agents now load cleanly under the sub-agents spec rather
than falling through to permissive registration.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 22:01:42 -04:00
Reza Rezvani
1851c8fb09 fix(plugins): restructure 9 multi-skill domain plugins into ./skills/ layout
Same root cause as #587/#591 — Claude Code's runtime loader rejects
array-form skills paths like ["./content-production", "./ai-seo", ...]
even when each entry is a valid subdirectory containing SKILL.md.
`claude plugin validate` accepts them but the loader does not.

The proven canonical layout (used by self-improving-agent in #536):

  <plugin>/
  ├── .claude-plugin/plugin.json    skills: "./skills"
  └── skills/
      ├── <skill-1>/SKILL.md
      ├── <skill-2>/SKILL.md
      └── ...

Restructured 9 multi-skill domain plugins:
- business-growth (4 skills moved)
- c-level-advisor (28)
- engineering (36)
- engineering-team (32)
- finance (2)
- marketing-skill (43)
- product-team (12)
- project-management (8)
- ra-qm-team (13)

Also fixed standalone plugins that had root SKILL.md + ./skills/ subdir
(agenthub, autoresearch-agent, executive-mentor, playwright-pro). The
loader rejected them despite skills="./skills" because of the conflicting
root SKILL.md (compare self-improving-agent which works because PR #536
moved its root SKILL.md). Moved each root SKILL.md into ./skills/<name>/.

Restored standalone plugin folders to their original paths after the
multi-skill restructure swept them into parent skills/ directories
(marketplace.json source paths require original locations).

Removed 7 orphaned marketplace entries that pointed to skill folders
without their own plugin.json (content-creator, demand-gen,
fullstack-engineer, aws-architect, product-manager, scrum-master,
skill-security-auditor) — these were already non-functional.

Bumped patch versions on every changed plugin and synced
marketplace.json. Marketplace now lists 29 working plugins (down
from 36).

After merge: users run `/plugin marketplace update claude-code-skills`
followed by `/plugin update --all` to pick up the working layout.
2026-05-02 22:51:20 +02:00
Reza Rezvani
c4801730f5 fix(plugins): restructure 21 single-skill plugins into ./skills/<name>/ layout
Claude Code v2.1.126 rejects "skills": ["./"] (array form) at runtime
with the same "Path escapes plugin directory: ./" error as the bare
string form, despite the official plugins reference docs explicitly
showing ["./"] as a valid example. `claude plugin validate` accepts it,
so the bug is in the runtime loader, not the manifest validator.

The proven workaround (already used for self-improving-agent in #536)
is to follow the canonical layout:

  <plugin>/
  ├── .claude-plugin/plugin.json    skills: "./skills"
  └── skills/<plugin-name>/
      ├── SKILL.md
      ├── scripts/
      ├── references/
      └── ...

Applied to 21 single-skill plugins:
- engineering-team/a11y-audit, google-workspace-cli, snowflake-development
- engineering/behuman, code-tour, data-quality-auditor, demo-video,
  docker-development, helm-chart-builder, karpathy-coder, llm-cost-optimizer,
  llm-wiki, prompt-governance, statistical-analyst, terraform-patterns
- finance/business-investment-advisor
- marketing-skill/video-content-strategist
- product-team/agile-product-owner, apple-hig-expert, code-to-prd,
  research-summarizer

Moved with each SKILL.md: scripts/, references/, assets/, templates/,
expected_outputs/. Kept at plugin root (per Claude Code requirements):
agents/, commands/, hooks/, settings.json, README.md.

Bumped patch version on each restructured plugin so /plugin update
picks up the new layout.

Refs #539
2026-05-02 22:33:59 +02:00
Reza Rezvani
2717c8f933 fix(plugins): bump versions to force /plugin update to pick up #587 fix
PR #587 fixed `"skills": "./"` in 35 plugin.json files but did not bump
versions. Claude Code uses version as the cache key — same version string
means /plugin update is a no-op and users keep loading the cached
plugin.json with the broken path. The /plugin UI shows "1 error" on
every plugin from this marketplace because the installed cache is stale.

Per the official version-management docs:
> If you set `version` in `plugin.json`, you must bump it every time
> you want users to receive changes. Pushing new commits alone is not
> enough.

Bump every plugin.json by one patch using max(plugin_version,
marketplace_version) as the base so no version moves backward. Sync the
new versions back into .claude-plugin/marketplace.json.

After this lands, users run `/plugin marketplace update claude-code-skills`
followed by `/plugin update --all` to pull the fixed manifests.
2026-05-02 22:14:12 +02:00
Reza Rezvani
014abcad80 Merge remote-tracking branch 'origin/dev' into fix/plugin-json-skills-path-539
# Conflicts:
#	engineering-team/self-improving-agent/.claude-plugin/plugin.json
2026-05-02 22:01:18 +02:00
Reza Rezvani
55e7e45512 fix(plugins): repair skills path in 35 plugin.json files (#539)
Claude Code v2.1.107+ rejects bare "skills": "./" with "Path escapes
plugin directory: ./". This blocks every plugin in the marketplace from
loading. Replace with the layout-appropriate form per the official
plugins reference:

- Single-skill plugin (SKILL.md at root):
    "skills": ["./"]                  array form (per docs example)
- Plugin with skills/ subdir:
    "skills": "./skills"              standard subdir layout
- Multi-skill domain plugin (skills are subfolders at root):
    "skills": ["./sub1", "./sub2"]    explicit list of skill dirs

The multi-skill case omits "./" from the array so the index SKILL.md
at the plugin root does not register as a skill — that would create
a redundant `marketing-skills:marketing-skills` namespace.

Verified by running `claude plugin validate` against all 35 manifests.

Closes #539
2026-05-02 21:55:58 +02:00
Scot Campbell
ed71c8b5bc
fix(self-improving-agent): correct skill discovery by moving root SKILL.md to skills/ and updating skills path in plugin.json
The plugin.json configured 'skills': './' which scans the plugin root for SKILL.md files. This found the root SKILL.md (name: 'self-improving-agent') and stopped, preventing Claude Code from discovering the subskills (review, promote, extract, status, remember) in the skills/ subdirectories.

Fix: Move root SKILL.md to skills/self-improving-agent/SKILL.md and update plugin.json to 'skills': './skills/' so Claude Code recursively scans the skills/ directory and discovers all 5 subskills.

This enables the intended /si:review, /si:promote, /si:extract, /si:status, /si:remember slash command routing.
2026-04-13 12:24:09 -04:00
Reza Rezvani
84ec346e78 fix(self-improving-agent): remove broken relative hook paths from docs (#506)
Issue #506 reported that `hooks/hooks.json` used `./hooks/error-capture.sh`
which fails for any session started outside the plugin dir. That specific
file was already fixed in commit 217b199 (which closed #392) — both
`hooks/hooks.json` and `settings.json` already use `${CLAUDE_PLUGIN_ROOT}`.

However, two stale example paths were still surfacing the bug in
documentation:

1. `engineering-team/self-improving-agent/CLAUDE.md` line 74 — "To enable"
   example with `./skills/self-improving-agent/hooks/error-capture.sh`
2. `engineering-team/self-improving-agent/hooks/error-capture.sh` header
   comment — install example with the same broken path

Both examples would teach users to copy the broken pattern into their own
settings.json, reproducing the exact bug #506 describes.

Fix: rewrite both examples to use `${CLAUDE_PLUGIN_ROOT}/hooks/error-capture.sh`
and add explicit "do not use relative paths" warnings. Also clarify in
CLAUDE.md that manual hook wiring is NOT needed when installing via
`/plugin install` — the hook is registered automatically from the plugin's
hooks.json.

Fixes #506

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 02:12:12 +02:00
Reza Rezvani
a4498aff75 fix(self-improving-agent): register /si:* slash commands correctly (#505)
Bug: after `/plugin install self-improving-agent@claude-code-skills`, only
1 skill appeared and `/si:review`, `/si:promote`, `/si:extract`, `/si:status`,
`/si:remember` were all unknown commands. The 5 sub-skills were silently
registered under the wrong namespace.

Root cause: two issues in the plugin manifest layer.

1. **Slash-command namespace is derived from `.claude-plugin/plugin.json`
   `name`**, not from the marketplace entry name, the settings.json name, or
   frontmatter. Previous `name: "self-improving-agent"` caused sub-skills to
   register as `/self-improving-agent:review` etc — never matching the
   documented `/si:*` commands.

2. **`command: /si:<op>` frontmatter in sub-skill SKILL.md files is a
   non-standard field** not in the Claude Code Skills spec. Claude Code
   silently ignores it. It created the illusion that the commands were being
   registered when they were not.

Fix:
- Change `engineering-team/self-improving-agent/.claude-plugin/plugin.json`
  `name` from "self-improving-agent" → "si". This is the namespace root; it
  does NOT affect the marketplace install identifier (which stays
  `self-improving-agent` via the marketplace.json `name` field). After the
  fix, skills register as `/si:review`, `/si:promote`, `/si:extract`,
  `/si:status`, `/si:remember` — matching the README and CLAUDE.md docs.
- Remove the non-standard `command: /si:<op>` frontmatter line from all 5
  sub-skill SKILL.md files (review, promote, extract, status, remember).
  Frontmatter now contains only `name` and `description` per the Claude Code
  Skills spec.
- Bump plugin.json version 2.1.2 → 2.3.0 to match repo release.
- Update marketplace.json entry: version 2.2.0 → 2.3.0, expand description
  to list all 5 slash commands and 2 sub-agents.

OpenClaw compat: the legacy `settings.json` inside the skill directory still
uses `"name": "self-improving-agent"` for OpenClaw's install path. Claude Code
ignores settings.json entirely, so this is safe to leave as-is.

Install flow (unchanged, verified correct after fix):
  /plugin marketplace add alirezarezvani/claude-skills
  /plugin install self-improving-agent@claude-code-skills
  # → 5 skills register as /si:review, /si:promote, /si:extract,
  #   /si:status, /si:remember

Known related issue (not fixed in this PR to keep scope tight): `agenthub`
has the identical bug. Its plugin.json `name` is "agenthub", so sub-skills
register as `/agenthub:init` rather than the documented `/hub:init`. Same
fix applies: rename plugin.json `name` to "hub". Will file as a follow-up.

Fixes #505

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 02:09:10 +02:00
Claude
6fa92054bd
release(v2.2.0): 223 skills, security suite, self-eval, full docs update
- Add 8 new skills: 6 security (adversarial-reviewer, ai-security, cloud-security, incident-response, red-team, threat-detection), self-eval, snowflake-development
- Update all counts: 223 skills, 298 tools, 416 references, 23 agents, 22 commands
- Update CHANGELOG.md with v2.2.0 entry
- Update all plugin.json versions to 2.2.0
- Update CLAUDE.md, README.md, docs/index.md, docs/getting-started.md, mkdocs.yml
- Verify MkDocs build (301 pages), Codex/Gemini sync, all new scripts pass --help

https://claude.ai/code/session_011CHSDjqWBPRcEJ3oJrAUHS
2026-03-31 05:55:51 +00:00
Claude
c8520885f9
feat: full ecosystem integration for PR #435 (5 security skills) and PR #436 (self-eval)
- Updated domain plugin.json counts (engineering-team: 36, engineering: 36)
- Added 6 new skills to mkdocs.yml navigation
- Updated engineering-team/CLAUDE.md with security skills section
- Generated docs pages for all 6 new skills
- Synced Codex + Gemini indexes and symlinks
- Ran cross-platform conversion (Cursor, Aider, Windsurf, KiloCode, OpenCode, Augment, Antigravity)

https://claude.ai/code/session_01XY4i7SR4BHLWJpdjwGnNLG
2026-03-30 19:11:46 +00:00
Claude
01f7ee22c9
feat(adversarial-reviewer): audit fixes + full ecosystem integration
- Enriched SKILL.md frontmatter (tier, category, dependencies, author, version)
- Added Description, Features, Usage, Examples sections for validator compliance
- Fixed cross-reference path (engineering/code-reviewer → engineering-team/code-reviewer)
- Updated domain plugin.json count (30→31)
- Added mkdocs.yml nav entry
- Synced Codex, Gemini indexes
- Generated docs page

https://claude.ai/code/session_01XY4i7SR4BHLWJpdjwGnNLG
2026-03-30 19:08:14 +00:00
Jaskarn Singh
d2da9d3dad
feat(engineering-team): add 5 consolidated security skills
Adds threat-detection, incident-response, cloud-security, red-team, and ai-security skills to engineering-team. Each includes SKILL.md, references, and Python scripts (stdlib-only). Consolidation of 66 individual skills into 5 production-ready packages.
2026-03-30 21:07:43 +02:00
Ethan Kreloff
040f304a1c
feat(engineering-team): add adversarial-reviewer skill
Adds adversarial code review skill with 3 hostile personas (Saboteur, New Hire, Security Auditor) that force genuine perspective shifts to break the self-review monoculture. Each persona must find at least one issue - no LGTM escapes.
2026-03-30 20:59:41 +02:00
Reza Rezvani
1ba7b77e34 refactor(a11y-audit): extract inline content to reference files (41KB → 9.6KB)
SKILL.md was 1,374 lines / 41KB — the largest in the repo, 2.7x above the
500-line Anthropic limit. Split into focused reference files.

Trimmed: 1,374 → 211 lines (9.6KB)

New reference files (6):
- ci-cd-integration.md (GitHub Actions, GitLab CI, Azure DevOps, pre-commit)
- audit-report-template.md (stakeholder report template)
- testing-checklist.md (keyboard, screen reader, visual, forms)
- color-contrast-guide.md (contrast checker, Tailwind palette, sr-only)
- examples-by-framework.md (Vue, Angular, Next.js, Svelte examples)
- wcag-22-new-criteria.md (WCAG 2.2 new success criteria)

Appended to existing:
- framework-a11y-patterns.md (fix patterns catalog added)

Untouched: aria-patterns.md, wcag-quick-ref.md
No content deleted — everything moved to references.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 12:20:03 +01:00
Reza Rezvani
070292bc27 docs: update all documentation for snowflake-development (29→30)
- CLAUDE.md: engineering-team 29→30
- engineering-team/CLAUDE.md: add snowflake-development, 29→30
- marketplace.json: engineering-skills 29→30
- docs/getting-started.md: Engineering Core bundle 29→30
- docs/index.md: Engineering Core card 29→30

Official skill count remains 205.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 10:32:43 +01:00
Reza Rezvani
4eaf1ee5ea fix: add plugin.json for snowflake-development, update parent count (29→30)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 09:42:47 +01:00
Reza Rezvani
0e97512a42 feat(engineering-team): add snowflake-development skill
Snowflake SQL, data pipelines (Dynamic Tables, Streams+Tasks), Cortex AI,
Snowpark Python, dbt integration. Includes 3 practical workflows, 9
anti-patterns, cross-references, and troubleshooting guide.

- SKILL.md: 294 lines (colon-prefix rule, MERGE, DTs, Cortex AI, Snowpark)
- Script: snowflake_query_helper.py (MERGE, DT, RBAC generators)
- References: 3 files (SQL patterns, Cortex AI/agents, troubleshooting)

Based on PR #416 by James Cha-Earley — enhanced with practical workflows,
anti-patterns section, cross-references, and normalized frontmatter.

Co-Authored-By: James Cha-Earley <jamescha-earley@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 09:38:57 +01:00
Reza Rezvani
c6206efc49 docs: update all documentation files with sprint skill counts
- CLAUDE.md: engineering-team 26→29, engineering 30→35, ra-qm 12→13
- engineering-team/CLAUDE.md: add azure-cloud-architect, gcp-cloud-architect, security-pen-testing
- ra-qm-team/CLAUDE.md: add soc2-compliance (12→13)
- docs/getting-started.md: update Available Bundles table
- docs/index.md: update domain skill count cards

Official skill count remains 205.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:52:05 +01:00
Reza Rezvani
86fc905e97 chore: sync cross-platform indexes, regenerate docs, fix plugin.json counts
- Codex CLI: 174 skills synced, 11 new symlinks
- Gemini CLI: 262 items synced, 11 new
- engineering plugin.json: 33 → 35 skills
- engineering-team plugin.json: 28 → 29 skills
- Docs regenerated: 261 pages (214 skills + 25 agents + 22 commands)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:42:39 +01:00
Reza Rezvani
f352e8cdd0 fix: trim 3 SKILL.md files to comply with Anthropic 500-line limit
Per Anthropic docs: "Keep SKILL.md under 500 lines. Move detailed
reference material to separate files."

- browser-automation: 564 → 266 lines (moved examples to references/)
- spec-driven-workflow: 586 → 333 lines (moved full spec example to references/)
- security-pen-testing: 850 → 306 lines (condensed OWASP/attack details, moved to references/)

No content deleted — all moved to existing reference files with pointers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:20:47 +01:00
Reza Rezvani
e201f349db fix: resolve audit issues — add missing sections, normalize frontmatter
- gcp-cloud-architect: add Anti-Patterns table (7 items) + Cross-References
- azure-cloud-architect: add Cross-References section
- tdd-guide: remove non-standard `triggers:` field from frontmatter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:27:02 +01:00
Reza Rezvani
43bb5c4d59 Merge branch 'feature/sprint-phase-3-gaps' into dev
# Conflicts:
#	docs/skills/engineering-team/index.md
#	docs/skills/engineering/index.md
#	mkdocs.yml
2026-03-25 14:23:21 +01:00
Alireza Rezvani
c1b2aacb74
Merge pull request #408 from alirezarezvani/feature/sprint-improvements
improve(engineering): enhance 5 existing skills — tdd-guide, env-secrets-manager, senior-secops, database-designer, senior-devops
2026-03-25 14:22:04 +01:00
Reza Rezvani
87f3a007c9 feat(engineering,ra-qm): add secrets-vault-manager, sql-database-assistant, gcp-cloud-architect, soc2-compliance
secrets-vault-manager (403-line SKILL.md, 3 scripts, 3 references):
- HashiCorp Vault, AWS SM, Azure KV, GCP SM integration
- Secret rotation, dynamic secrets, audit logging, emergency procedures

sql-database-assistant (457-line SKILL.md, 3 scripts, 3 references):
- Query optimization, migration generation, schema exploration
- Multi-DB support (PostgreSQL, MySQL, SQLite, SQL Server)
- ORM patterns (Prisma, Drizzle, TypeORM, SQLAlchemy)

gcp-cloud-architect (418-line SKILL.md, 3 scripts, 3 references):
- 6-step workflow mirroring aws-solution-architect for GCP
- Cloud Run, GKE, BigQuery, Cloud Functions, cost optimization
- Completes cloud trifecta (AWS + Azure + GCP)

soc2-compliance (417-line SKILL.md, 3 scripts, 3 references):
- SOC 2 Type I & II preparation, Trust Service Criteria mapping
- Control matrix generation, evidence tracking, gap analysis
- First SOC 2 skill in ra-qm-team (joins GDPR, ISO 27001, ISO 13485)

All 12 scripts pass --help. Docs generated, mkdocs.yml nav updated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:05:11 +01:00
Reza Rezvani
67e2bfabfa improve(engineering): enhance tdd-guide, env-secrets-manager, senior-secops, database-designer, senior-devops
tdd-guide (164 → 412 lines):
- Spec-first workflow, per-language examples (TS/Python/Go)
- Bounded autonomy rules, property-based testing, mutation testing

env-secrets-manager (78 → 260 lines):
- Cloud secret store integration (Vault, AWS SM, Azure KV, GCP SM)
- Secret rotation workflow, CI/CD injection, pre-commit detection, audit logging

senior-secops (422 → 505 lines):
- OWASP Top 10 quick-check, secret scanning tools comparison
- Supply chain security (SBOM, Sigstore, SLSA levels)

database-designer (66 → 289 lines):
- Query patterns (JOINs, CTEs, window functions), migration patterns
- Performance optimization (indexing, EXPLAIN, N+1, connection pooling)
- Multi-DB decision matrix, sharding & replication

senior-devops (275 → 323 lines):
- Multi-cloud cross-references (AWS, Azure, GCP architects)
- Cloud-agnostic IaC section (Terraform/OpenTofu, Pulumi)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:49:25 +01:00
Reza Rezvani
2056ba251f feat(engineering-team): add azure-cloud-architect, security-pen-testing; extend terraform-patterns
azure-cloud-architect (451-line SKILL.md, 3 scripts, 3 references):
- 6-step workflow mirroring aws-solution-architect for Azure
- Bicep/ARM templates, AKS, Functions, Cosmos DB, cost optimization
- architecture_designer.py, cost_optimizer.py, bicep_generator.py

security-pen-testing (850-line SKILL.md, 3 scripts, 3 references):
- OWASP Top 10 systematic audit, offensive security testing
- XSS/SQLi/SSRF/IDOR detection, secret scanning, API security
- vulnerability_scanner.py, dependency_auditor.py, pentest_report_generator.py
- Responsible disclosure workflow included

terraform-patterns extended (487 → 740 lines):
- Multi-cloud provider configuration
- OpenTofu compatibility notes
- Infracost integration for PR cost estimation
- Import existing infrastructure patterns
- Terragrunt DRY multi-environment patterns

Updated engineering-team plugin.json (26 → 28 skills).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 13:32:22 +01:00
Reza Rezvani
95f8bd42b2 fix(plugins): normalize author fields and versions in 4 plugin.json files
- executive-mentor: add url to author, add homepage + repository
- self-improving-agent: add url to author, version 1.0.0 → 2.1.2
- playwright-pro: fix author name (Reza → Alireza), replace email with url, version 1.0.0 → 2.1.2
- google-workspace-cli: add url to author

All plugin.json files now use consistent author object format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:07:08 +01:00
Reza Rezvani
217b199ff8 fix(self-improving-agent): use CLAUDE_PLUGIN_ROOT for hook paths
Relative paths (./hooks/error-capture.sh) resolve against the project
working directory, not the plugin root. Replaced with
${CLAUDE_PLUGIN_ROOT}/hooks/error-capture.sh in both hooks.json and
settings.json.

Fixes #392

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:32:57 +01:00
Reza Rezvani
193f71e56f fix: correct broken install paths, improve skill descriptions, standardize counts
Cherry-picked from PR #387 (ssmanji89) and rebased on dev.

- Fix 6 wrong PM skill install paths in INSTALLATION.md
- Fix content-creator → content-production script paths
- Fix senior-devops CLI flags to match actual deployment_manager.py
- Replace vague descriptions with trigger-oriented "Use when..." on 7 engineering skills
- Standardize skill count 170 → 205+, finance 1 → 2, version 2.1.1 → 2.1.2
- Use python3 instead of python for macOS compatibility
- Remove broken integrations/ link in README.md

Excluded: *.zip gitignore wildcard (overrides intentional design decision)

Co-Authored-By: sully <ssmanji89@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:57:40 +01:00
Reza Rezvani
ea04644987 fix(plugins): change author from string to object in plugin.json
Claude Code plugin manifest requires author as {"name": "..."}, not a
plain string. Fixes install error: "author: Invalid input: expected
object, received string"

Affected: agenthub, a11y-audit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 09:02:28 +01:00