Commit graph

37 commits

Author SHA1 Message Date
Claude
08740d4ec2
fix(stream): post-merge required changes for PRs #895/#926/#942/#943/#944/#965 + counter true-up + #964 guard + #954 doc drift
Applies every pre-merge required change from audit/pr-stream-2026-08/ that
could not land on contributor forks, plus the stream's cross-cutting fixes:

- stock-analysis (#944): description trimmed 1463 -> 1001 chars; Anti-Patterns
  + Cross-References sections added; security-auditor false positive at
  holdco-assetmgr.md:58 suppressed inline (auditor:ignore-line) -> strict PASS
- deepread (#965): renamed research/dsh-deepread -> research/deepread; H1 and
  name updated; research-summarizer cross-ref path-qualified; 12 cited sources
  added across both references; plugin.json + marketplace entry; routed in the
  research orchestrator (SKILL.md registry + SIGNALS + classifier.py in
  lockstep, verified: 'deeply read this pdf' -> deepread, 3 signals)
- business-name-fit (#926): 'Use whenever' -> 'Use when' (validator trigger
  regex); +2 cited sources (USPTO TMEP §1209, Usunier & Shaner 2002) -> 5
- embedded-iot-mentor (#942): references/hardware-selection.md (7 sources,
  datasheet-anchored) + worked mini-example; validator length gate now passes
- swedish-mentor (#943): references/swedish-resources.md (6 sources, stable
  official URLs only); session recipes, milestones, learner situations,
  worked example; mandated opener softened to guidance; plugin.json +
  marketplace entry; validator length gate now passes
- Related Projects (#895): LinkedIn Skills row trued up (10 -> 11 skills,
  hardcoded star count dropped)
- check_plugin_json.py: marketplace description <= 1024 guard added to --all
  (the #964 regression guard; commercial-skills sits at 1021/1024)
- #954 doc drift: quality_gates_for_skills.md, cs-skill-author.md,
  security-guidance SKILL.md now point attribution at authoring-notes.json
- Counter true-up after the 6-skill merge batch: 370 skills / 672 tools /
  809 refs / 92 plugins across README.md badge+table, CLAUDE.md, marketplace
  metadata (derive_counters.py --check passes)

All gates green locally: frontmatter 0 errors, model freshness 0 findings,
dual-publish 0 drifted, paths 0, smoke 0 failed, plugin-json 0 FAIL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bzm6Pafyxja6g4jUDPcei
2026-08-21 09:01:24 +00:00
Alireza Rezvani
2620e7ed8b
Merge pull request #942 from mh-mansouri/feature/embedded-iot-mentor
feat(engineering-team): add embedded-iot-mentor skill
2026-08-21 10:47:32 +02:00
Alireza Rezvani
1f501dd6f3
Merge pull request #938 from benrfairless/fix/stale-model-references
fix(models): remove retired model IDs and stale pricing, flip G7 blocking
2026-08-21 10:43:47 +02:00
Claude
7405298b4b
fix: resolve the actionable reported issues (#954, #949, #933, #931, #969, #968, #924, #885)
- #954: strip non-spec source/attribution keys from all 39 plugin.json
  manifests so Claude Code's validator accepts them; metadata preserved in
  new .claude-plugin/authoring-notes.json sidecars; check_plugin_json.py now
  hard-fails manifests carrying those keys and sanity-checks the sidecar;
  CLAUDE.md ClawHub schema section updated to the new rule.
- #949: move the c-level-agents plugin out of c-level-advisor/ to a
  top-level directory so the two marketplace sources no longer overlap;
  updated marketplace.json source, homepage, descriptions, all
  cross-references, docs, harness manifest, mirror-tree symlinks/indexes,
  and rebased the moved files' relative links; domain counters trued up
  (18 -> 19 domains).
- #933: replace dead links to the gitignored maintainer-local megaprompts/
  tree with annotated plain-text references (44 files: SKILL.md, READMEs,
  agents, commands).
- #931: DynamoDB on-demand pricing updated to post-Nov-2024 rates
  ($0.625/M writes, $0.125/M strongly consistent reads).
- #969: skill_security_auditor.py and the three dossier scripts reconfigure
  stdout/stderr to UTF-8 (errors=replace) so legacy Windows codepages no
  longer crash at print time; PYTHONUTF8=1 documented.
- #968: Windows Notes section in INSTALLATION.md + README pointer for the
  core.symlinks mirror-tree checkout caveat.
- #924/#885 residuals: hook commands quote "${CLAUDE_PLUGIN_ROOT}" paths in
  all plugin hooks.json/settings.json (space-safe roots); removed the stale
  pre-rename status/review mirror symlinks and index entries left over from
  the memory-status/memory-review rename.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
2026-08-21 05:47:37 +00:00
Mahdi
2c84eea77b feat(engineering-team): add embedded-iot-mentor skill 2026-08-05 21:25:11 +02:00
Ben Fairless
66ea9621dd
fix(models): remove retired model IDs and stale pricing, flip G7 blocking
Clears every reference the new G7 lint flags, then makes it blocking so the
class cannot drift back. audit/engineering-agentic-2026-07 marked the
senior-ml-engineer half of this STILL-OPEN.

Deleted rather than updated:

  - agent-designer/agent_evaluator.py's _define_cost_benchmarks() held
    per-token prices for gpt-4, gpt-3.5-turbo and claude-3 at 2024 rates. The
    result was assigned to self.cost_benchmarks and never read by anything, so
    the method is gone. Cost analysis uses the cost_usd the caller supplies per
    execution log, which is the only figure that can be accurate

Made model-agnostic, following the precedent already set by
senior-prompt-engineer/scripts/prompt_optimizer.py's --price-per-mtok:

  - senior-ml-engineer SKILL.md and llm_integration_guide.md drop both 2024
    price tables and the context-window table (which claimed GPT-4 = 8,192).
    calculate_cost() takes rates as parameters; count_tokens() takes an
    encoding name, since encodings outlive model IDs and
    encoding_for_model() raises KeyError on anything unmapped
  - OpenAIProvider loses its default model, so the caller must pass one
  - llm-cost-optimizer's routing table names tiers, not models

Pinned to current IDs where an example genuinely needs one: SKILL_PIPELINE.md
(claude-opus-4-6 -> claude-opus-5), prompt-governance (claude-sonnet-4-5 ->
claude-sonnet-5), agent-designer README. Both dual-publish copies of the CAIO
pricing move together, so G4 stays green.

TEAM_STRUCTURE_GUIDE.md documented `prompt_optimizer.py --model gpt-4 --task
classification`. That contract no longer exists: there is no --task flag and
`prompt` is a required positional. Replaced with a runnable invocation.

Four references stay, with reasons in the allowlist: two litreview examples
where the retired model is the subject of the literature being reviewed, one
dated Computer Use citation, and the embedding benchmark already labelled a
2024 snapshot.

Assisted-by: Claude Code:claude-opus-5
2026-08-03 08:55:36 +08:00
Alireza Rezvani
dff4ba5a46
feat(engineering): add named-persona-adversarial-review (hardened from #866) (#867)
Adds a philosophy-grounded code-review skill: review through the lens of real
engineers' *documented, sourced* principles (Torvalds, Thompson, Carmack, Beck,
Brooks + Jobs, Cagan, Traynor), complementing engineering-team/adversarial-reviewer
(abstract roles) and code-reviewer (general quality).

Concept contributed by @YuhaoLin2005 in PR #866. Hardened for this repo's
conventions before merge:
- Consolidated to ONE location (engineering-team/skills/, auto-included via the
  engineering-skills plugin's ./skills glob). Dropped the orphaned top-level
  skills/ copy the original PR also added — no such plugin root exists in the tree.
- Added anti-fabrication discipline: cite the sourced principle (not an invented
  verbatim quote), confidence levels on every attribution, drop a persona rather
  than fabricate — mirrors productivity/andreessen's citation rule. LLMs hallucinate
  quotes; attributing invented words to real living engineers is the core risk.
- Added references/persona_principles.md grounding every persona in a real,
  citeable source with a confidence level (7+ sources incl. de Bono, Kahneman, Feynman).
- Removed the dangling /adversarial-review slash command reference and the
  non-English trigger phrase; description passes skill_description_validator.

Counters trued up via scripts/derive_counters.py --check (passes):
350 skills, 717 references, 80 plugins.



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

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: YuhaoLin2005 <278400118+YuhaoLin2005@users.noreply.github.com>
2026-07-01 03:05:09 +02:00
Claude
19cc8e588c
refactor(tooling): PR #841 round-4 review — exit-code note in incident_triage help, unified if/else in team_scaling
- incident_triage.py: --sample help text now documents the intentional
  exit-2 SEV1 signal so &&-chained callers aren't surprised
- team_scaling_calculator.py: consolidate the split warn/load blocks into
  the single if/else pattern the other five tools use

https://claude.ai/code/session_01CUWsrUNZP9jpxvAwq67UiT
2026-06-11 16:12:02 +00:00
Claude
0cc9ef05e5
refactor(tooling): PR #841 round-2 review — sys import to file top, incident_triage input-override warning
- team_scaling_calculator.py: move sys import to the file-level import block
  (was inline in the conditional); behavior unchanged
- incident_triage.py: warn on stderr when --sample overrides a provided
  --input, matching team_scaling_calculator's convention

https://claude.ai/code/session_01CUWsrUNZP9jpxvAwq67UiT
2026-06-11 16:02:14 +00:00
Claude
21f8d18a60
feat(tooling): backport --sample to 6 more tools across 3 domains (#654)
Brings G9 JSON-output coverage from 19 to 25 tools (25/25 verified):

- business-growth: health_score_calculator (embedded 2-customer fixture),
  pipeline_analyzer (embedded 4-deal pipeline fixture)
- c-level-advisor: pmf_scorer (--sample flag for its existing sample_data(),
  suppressing the stdout notice that corrupted JSON piping),
  team_scaling_calculator (--sample flag for its embedded defaults)
- engineering-team: incident_triage (embedded synthetic ransomware event),
  contrast_checker (--sample as alias of the existing --demo)

Required-arg behavior unchanged when --sample is absent (still exits 2 with
a usage error). All gates green: G9 25/25, G8, dual-publish, path linter.

Together with the 5 #654-named tools, 4 JSON-honor fixes, and the pre-existing
sample-pattern tools, more than 20 tools now support the embedded-sample
convention — meeting #654's acceptance bar.

https://claude.ai/code/session_01CUWsrUNZP9jpxvAwq67UiT
2026-06-11 15:56:18 +00:00
Claude
5acece10ac
feat(skills): PR-2 — final REWRITE-verdict skills + dead-link/zip cleanup
- senior-prompt-engineer: rebuilt on the new-gen pattern; 2023-era cheatsheet
  dropped; scripts made model-agnostic and rot-proof (user-supplied pricing,
  no hardcoded model/cost tables); 5 workflows with executable exit-code
  gates; zero stale model names remain
- senior-security: 445 -> 64 lines; owns only its unique STRIDE/DREAD value
  with exact CLIs; 10-row lane table routes everything the v2.2 security
  suite covers (all paths verified)
- engineering-team docs: all dead computer:/// links repointed to live
  skills/ folders; all 14 stale .zip archives deleted (0 references remain;
  folders are the canonical distribution)
- universal-scraping-architect: placeholder cs-scraping-architect agent and
  cs-scrape command rewritten with verified CLIs, refusal gates, and the
  empirically-confirmed validate_extraction.py exit-code contract

Gates at HEAD: check_paths 0 findings; check_dual_publish 0 drifted;
smoke 582/582; counters match; 78 manifests OK; compileall clean.

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-11 15:28:22 +00:00
Claude
2e600b6454
Merge remote-tracking branch 'origin/dev' into claude/skills-plugins-audit-vrttx1
# Conflicts:
#	.claude-plugin/marketplace.json
#	.codex/skills-index.json
2026-06-11 03:59:40 +00:00
Claude
aecfb8e0bb
feat(skills): wave-3 optimization — domain overhauls per newgen audit
marketing: context-file unified on .claude/product-marketing-context.md;
ai-seo merged into aeo (2 new cited references, folder deleted); index +
marketing-ops routers rebuilt honestly; 24 orphan scripts wired with exact
CLIs; prompt-engineer-toolkit stub references rewritten with cited content;
Meta 20%-rule + GA4 terminology freshness; 5 zips + 3 planning docs removed

c-level-advisor: role registry 9->14 across all 6 routing surfaces; decision
memory unified on ~/.claude/decisions/{raw,approved}; onboarding schema
canonicalized; 12 phantom commands resolved; index repaired (33/37/68 real
counts); ma-playbook sourced + verification loop; 28 trigger descriptions

engineering(+team): agent-designer 279->76 lines and rag-architect 318->71
lines rebuilt around their tools (stale ada-002/pricing gone); release-manager
merged into changelog-generator (version_bumper + hotfix refs moved, crashing
release_planner dropped); 6 skills' orphan scripts wired; ms365 tools gained
real CLIs; 5 brochure skills de-filled; 4 unreferenced zips removed;
bundle counts trued (25->37, 23->32); 18 trigger descriptions

product/research/compliance/bizops: apple-hig-expert rebuilt around
hig_checker's real CLI with web-verified facts; notebooklm re-verified against
live product; 5 index skills converted to honest routers; research-summarizer
repaired with explicit lane statement; 8 over-1024 descriptions compressed;
9 sub-skills gained fenced CLI examples; GDPR one-month (Art. 12(3)) with
calendar-month deadline math; MDR PSUR table per Art. 86(1); 12 ra-qm zips
removed; 24 trigger descriptions

Verified: check_paths 0 findings; check_dual_publish 0 drifted; smoke 581/581;
check_plugin_json 77 OK; compileall rc=0; all descriptions <=1024 chars

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-11 03:58:41 +00:00
Claude
3394eda8bc
fix: resolve open GitHub issues #805 #806 #807 #748 #785
- #805: insert missing skills/ segment in all per-skill install commands
  across 5 domain READMEs (engineering-team, project-management,
  marketing-skill, c-level-advisor, ra-qm-team); every path now resolves
  to a real directory
- #806: pr-review-expert SKILL.md curl examples now pass Jira/Linear
  credentials via stdin curl config (-K -) instead of argv, with a netrc
  note, so tokens never reach the process list or shell history
- #807: implement the documented interfaces for the three senior-devops
  scripts (terraform_scaffolder: aws/gcp/azure module skeletons with
  optional terraform fmt/validate; pipeline_generator: GitHub Actions /
  CircleCI configs with build,test,security,deploy stages and runtime
  detection; deployment_manager: blue-green/rolling manifests + kubectl
  runbooks with deploy/rollback/analyze subcommands); align SKILL.md
- #807: ci-cd-pipeline-builder stack_detector now detects Terraform and
  Docker stacks and emits their lint/test/build commands; downstream
  pipeline_generator gains a generic job for non-node/python/go stacks
- #748: sync-vibe-skills.py defaults to a flat layout one level below
  ~/.vibe/skills (the only depth Vibe discovers), with collision-safe
  naming and a --nested flag for the legacy namespaced layout
- #785: new scripts/sync-codebuff-skills.py syncs all skills into
  Codebuff's ~/.agents/skills using the same flat-layout machinery

https://claude.ai/code/session_01CUWsrUNZP9jpxvAwq67UiT
2026-06-11 03:34:13 +00:00
Claude
b99505446a
fix: resolve 11 P0 correctness defects from newgen audit
- fda-consultant-specialist: QMSR transition (eff. 2026-02-02) correctly framed;
  legacy QSR sections mapped to ISO 13485:2016 clauses (17-row mapping)
- risk-management-specialist: ALARP-with-cost-benefit replaced by AFAP per
  EU MDR Annex I GSPR 1-4 + EN ISO 14971:2019/A11
- eu-ai-act-specialist: Art. 5(1)(f) sample corrected (workplace, not retail);
  both dual-published copies kept byte-identical
- financial-analyst: 4 scripts now read bundled sample shape (and flat shape),
  exit non-zero on missing data; verified real outputs (ROE 25%, DCF $13.90/sh)
- deal-desk: fixed-COGS margin math unified across script/reference/SKILL.md;
  margin scoring recalibrated (30% discount on 80% GM now scores 25, not 37)
- senior-qa/backend/frontend + email-template-builder: 8 corrupted code
  literals from past bulk YAML-quoting sweep reconstructed
- google-workspace-cli: install coordinates fixed to verified upstream
  (@googleworkspace/cli); phantom subcommands replaced with verified syntax
- project-management: fabricated Atlassian MCP tool names replaced with the 30
  real Remote MCP tools; new canonical references/atlassian-mcp-tools.md;
  unavailable capabilities routed to UI/REST; orphaned scripts wired
- command-guide: retired (documented a different repo's ecosystem)
- markdown-html: stale v2.10.0 'foundation' text replaced; routing now targets
  the shipped converters; never hand-render
- webinar_funnel_scorer.py: argparse added (--help/--sample/stdin)
- handoff redaction linter: missing 17th pattern (private CIDR) added

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-10 14:32:43 +00:00
Claude
0e41cb2357
feat(code-reviewer): C-specific smell detector + fixtures
Phase 2 / Tier 1 of the post-#769 audit. Until now, the deterministic
analyzer (scripts/code_quality_checker.py) had language-specific smell
detectors only for C# and Java; C / C++ / Rust / Ruby / PHP / Dart all
fell through to generic checks. This PR brings C onto the same footing
as C# and Java -- the security delta is largest for memory-unsafe
languages, so C goes first per the audit ranking.

What's detected (CERT C + CWE catalogue patterns)

  - Banned functions: gets, strcpy, strcat, sprintf, vsprintf
    (CWE-242 / CWE-120 family -- no bounds check on any of them)
  - Format-string vulnerability: printf(var) / syslog(var) where the
    first arg is a bare identifier instead of a literal (CWE-134).
    Suppressed when the first arg is a literal string.
  - Unbounded scanf: %s without a width specifier (CWE-120).
    Suppressed when a width is present (e.g. %31s).
  - malloc/calloc/realloc result not NULL-checked within 5 lines
    (CWE-690). Recognises if (p == NULL), if (NULL == p), if (!p),
    if (p != NULL).
  - free(p) without setting p = NULL on the next real line
    (CWE-416 use-after-free guardrail). Low severity since some
    style guides skip the zeroing convention.
  - system() with a non-literal argument (CWE-78 command injection).
    Suppressed when the argument is a string literal or NULL.

Implementation

  - New function check_c_specific_smells() in code_quality_checker.py,
    placed after check_java_specific_smells(). Reuses the existing
    _strip_csharp_comments helper -- C, C#, and Java share // and /* */
    comment syntax.
  - Wired into analyze_file() via the existing dispatcher pattern:
    `if language == "c": smells.extend(check_c_specific_smells(content))`.

Fixtures (regression-detection harness)

  - assets/sample_c_smells.c -- 67 lines, every detector pattern
    labelled inline with its CWE. Smells fixture produces 10 C-specific
    detector hits (strcpy fires twice intentionally, once in each
    function). Score: 4/100 (F).
  - assets/sample_c_clean.c -- same surface area refactored per
    rules/universal.md + languages/c.md. Zero C-specific hits.
    Score: 100/100 (A).
  - expected_outputs/sample_c_smells_quality.json and
    expected_outputs/sample_c_clean_quality.json -- committed JSON
    output mirrors the existing C# / Java regression-guard pattern.

Documentation

  - engineering-team/skills/code-reviewer/README.md
    - "Language-specific smell packs" line extended to enumerate the
      6 C-pack patterns alongside the existing C# and Java packs.
    - Bundled-fixtures table adds the 2 new C fixture rows.
  - engineering-team/skills/code-reviewer/SKILL.md
    - "Adding a New Language" step 5 reference: C# and Java -> C#,
      Java, and C.
    - "Regression Fixtures" paragraph reference: C# and Java -> C#,
      Java, and C.
  - docs/skills/engineering-team/code-reviewer.md mirrors the same
    SKILL.md updates.
  - CHANGELOG.md gets a new [Unreleased] section above the existing
    code-reviewer entry, documenting the detector + fixtures.

Regression

  - All 6 fixtures (C# / Java / C x smells / clean) pass byte-for-byte
    against expected_outputs/*.json. No drift introduced in C# or Java
    behaviour.

Not in this PR (Phase 2 audit, subsequent PRs)

  - check_<name>_specific_smells for C++, Rust, Python, Kotlin, PHP,
    Ruby, Dart, Go, Swift, TypeScript, JavaScript. C++ and Rust are
    the next-highest-leverage targets (smart-pointer ownership,
    unsafe block discipline). Same fixture + expected_outputs pattern
    will apply to each.

https://claude.ai/code/session_01SnXMhpyuAwrws26Wy4fizz
2026-05-28 14:27:26 +00:00
Claude
52e8caf3a1
docs(code-reviewer): sync README + MkDocs page + cross-platform indexes
Follow-up to PR #769 (6 new language files) and PR #772 (analyzer
wiring). Both PRs updated SKILL.md but left every derivative doc
surface stale. This PR closes the doc-sync gap.

Changed

  - engineering-team/skills/code-reviewer/README.md
    - Line 3 (one-liner): 9 -> 15 named languages, matching SKILL.md
    - Line 90 (per-language guide list): 7 -> 13 file slugs
  - docs/skills/engineering-team/code-reviewer.md (MkDocs page)
    - Frontmatter description: 9 -> 15 languages
    - File-tree block: 6 new languages/*.md rows
    - Dispatch table: 6 new extension -> file rows
    - --language valid-values comment: 8 -> 14 choices

Cross-platform mirrors

  - .gemini/skills-index.json: regenerated via sync-gemini-skills.py
    (diff is the single code-reviewer description; gemini script
    discovered no other drift)
  - .vibe/skills/claude-skills/skills-index.json: regenerated via
    sync-vibe-skills.py with --target .vibe/skills (1 unrelated new
    entry: workflow-builder; full regen was the path of least friction
    for vibe)
  - .hermes/skills/claude-skills/skills-index.json: hand-patched only
    the code-reviewer entry. Full sync-hermes regeneration would have
    bundled 33 new-skill entries (305 -> 338) accumulated from prior
    PRs that never re-ran the script. That mirror-drift cleanup is a
    separate concern -- left for its own PR.
  - .codex/skills-index.json: was already current (the recurring
    automated "chore: sync codex skills symlinks [automated]" commit
    keeps it fresh between PRs).

CHANGELOG.md

  - New [Unreleased] section above the existing Mistral Vibe block
    documenting PR #769 (language coverage 7 -> 13), PR #772
    (deterministic analyzer wiring), and this PR (doc sync).

Why hand-patched hermes (instead of script regen): the script
regenerates the entire index from current repo state, which surfaces
accumulated drift unrelated to code-reviewer (workflow-builder,
claude-coach, andreessen, handoff, business-operations, commercial,
compliance-os, research-ops -- 33 entries total). Bundling that with
a code-reviewer doc-sync PR would have muddied scope. Hand-patching
keeps this PR focused; a follow-up PR can sync-hermes properly.

https://claude.ai/code/session_01SnXMhpyuAwrws26Wy4fizz
2026-05-28 06:56:13 +00:00
Claude
6e7130ccc0
fix(code-reviewer): wire 6 new languages into deterministic analyzer
PR #769 added language-rule files for C, C++, Rust, Ruby, PHP, and
Dart/Flutter, and updated SKILL.md's dispatch table + the --language
valid-values comment. But scripts/code_quality_checker.py was left
unchanged, so the deterministic analyzer silently skipped any file in
those 6 languages — the dispatch table promised coverage the script
didn't deliver.

Closes that gap by extending three structures in code_quality_checker.py:

  - LANGUAGE_EXTENSIONS: 6 new entries matching SKILL.md exactly
    (c declared before cpp so `.h` resolves to C per the dispatch table)
  - find_functions patterns: language-aware function regexes
  - find_classes patterns + nested method_patterns: type-defs and
    method counting for class-like constructs (struct/enum/trait/union
    for Rust; class/module for Ruby; class/interface/trait/enum for PHP;
    class/mixin/enum/extension with Dart 3 modifier prefixes; struct for
    C; class/struct for C++)

The function regexes for C and C++ require a trailing `{` so prototypes
and call sites aren't misclassified as definitions, and exclude
control-flow keywords (if/while/for/switch/return/sizeof) by negative
lookahead. This matches the discipline already used for the Java and C#
patterns (require modifier keywords).

Verification

  - python3 scripts/code_quality_checker.py --help → all 14 languages
    now appear as --language choices.
  - Smoke-tested with a minimal sample per new language; each correctly
    detects language, counts functions and classes, and produces a
    quality score (no "Unsupported file type" errors).
  - Regression: all 4 bundled fixtures (csharp/java × smells/clean)
    still match their committed expected_outputs/*.json byte-for-byte.

Not in this PR (Phase 2 of the audit, separate PRs):
  - Language-specific check_<name>_specific_smells detectors. Only C#
    and Java have these today; the audit flagged C/C++/Rust as the
    next-highest-leverage additions (memory safety, unsafe block
    discipline, smart pointer ownership).
  - Asset fixtures + expected_outputs JSON for the 6 new languages as
    regression guards.
  - Modernity / version-anchor sweep on the language markdown files.

https://claude.ai/code/session_01SnXMhpyuAwrws26Wy4fizz
2026-05-28 06:44:31 +00:00
fouad
19f74425bf
feat(code-reviewer): add C, C++, Rust, Ruby, PHP, and Dart/Flutter language support (#769)
Adds 6 new language files to the code-reviewer skill, expanding coverage from 7 to 13 languages. Each file follows the established hybrid structure — language-specific rules inline, universal rules in rules/universal.md.

Files added:
- languages/c.md — memory safety, banned functions, pointer ownership, buffer bounds, UB
- languages/cpp.md — smart pointers, RAII, reinterpret_cast, virtual destructors, C++17/20
- languages/rust.md — unsafe blocks, .unwrap() in production, Tokio pitfalls, clippy
- languages/ruby.md — Rails-aware N+1, strong_parameters, YAML.safe_load, Marshal.load
- languages/php.md — SQLi, unserialize, eval, file inclusion, CSRF, XSS, PHP 8.x
- languages/dart.md — Dart + Flutter: dispose(), BuildContext across async, const widgets

SKILL.md dispatch table and --language valid values updated accordingly.
2026-05-28 08:26:14 +02:00
Claude
0f88555485
chore(versioning,docs): normalize stale versions to 2.9.0 + refresh counts
Version normalization (scope: only plugins/skills older than 2.7.0):
- Bumped 52 plugin.json + 21 SKILL.md `version` fields from pre-2.7.0
  values (1.0.0 / 2.0.x / 2.2.x / 2.3.x / 2.4.x / 2.5.x) to 2.9.0.
  Left 2.7.0+ packages untouched. Tool mirrors (.codex/.gemini/.vibe/
  .hermes) excluded. All manifests still pass check_plugin_json --all.

Doc count refresh (recomputed raw figures: 338 skills, 16 domains,
62 plugins, 533 Python tools, 676 references):
- marketplace.json: both descriptions + metadata.version -> 2.9.0.
- Root README: headline, badges (Skills 338, Agents 51+, Commands 87+),
  intro counts, convert section (338 skills / 9 tools), and the full
  domain table rebuilt to 16 domains summing to 338 (adds research-ops,
  business-operations, commercial, compliance-os; corrects product 17,
  marketing 46, c-level 66, ra-qm 18, finance 4, engineering 51/78).
- Fixed stale per-skill README `Version:` lines left inconsistent by the
  bump (andreessen, c-level-agents, product-team, senior-qa).
- Fixed stale domain README footers (product-team 17/17, c-level 66/66,
  project-management 9/9).
- CLAUDE.md scope line, structure tree, highlight, and footer synced to
  the raw figures.

https://claude.ai/code/session_01PUNmQVE4WYvcrzpq2anC3D
2026-05-27 05:22:59 +00:00
Claude
5ff4375603
feat(code-reviewer): wire Java into analyzer + complete the refactor
Builds on @mitnick2012's universal+per-language restructure (PR #742).

- Add Java as a first-class deterministic language in code_quality_checker.py
  (LANGUAGE_EXTENSIONS + function/class/method patterns + check_java_specific_smells),
  so the documented `--language java` command works instead of erroring on an
  invalid choice. Add Java debug + @SuppressWarnings signals to pr_analyzer.py.
- Add Java regression fixtures (sample_java_smells/clean.java) with committed
  expected_outputs JSON, mirroring the existing C# fixtures.
- Delete references/{code_review_checklist,coding_standards,common_antipatterns}.md,
  now duplicated by rules/universal.md + languages/*.md; repoint README and the
  C# clean fixture header at the new structure.
- Document the optional analyzer-wiring + fixture steps in the "Adding a New
  Language" guide and restore a Regression Fixtures section in SKILL.md.

https://claude.ai/code/session_01DjuELpoFdFbFscr3kAatni
2026-05-26 14:02:19 +00:00
fouad
497503b085 Merge branch 'dev' of https://github.com/alirezarezvani/claude-skills 2026-05-25 13:27:34 +01:00
fouad
14c645ba16 refactor(code-reviewer): — universal rules + per-language files
- Extract commun languages rules in a separate rules/universal.md containing all cross-language rules in one place
- Move language-specific rules inline into each languages/*.md file,
  organised into consistent sections: Security / Async / Resource
  Management / Exception Handling / Performance / Idioms
- Add Java support: languages/java.md with full section coverage
- Every review now requires exactly 2 file reads: universal.md +
  one language file
- Add "Adding a new language" guide to SKILL.md: one file to create,
  nothing else changes
2026-05-25 13:15:37 +01:00
Alireza Rezvani
290134e28b
Merge pull request #735 from alirezarezvani/claude/pr-723-review-zZdrT 2026-05-23 04:29:24 +02:00
Claude
7dc7fae1fe
feat(code-reviewer): raise quality score 54.8/D → 72.5/B- with assets, expected outputs, README
Addresses the Phase 3 quality_scorer roadmap items from the plugin audit:
adds the bundled fixtures, sample outputs, and quick-reference README that
the scorer expects, without diverging from the project's minimal-frontmatter
SKILL.md convention.

assets/:
- sample_csharp_smells.cs: a C# fixture with every pattern the skill
  detects (async void, blocking on Task, swallowed Exception, undisposed
  IDisposable, new HttpClient(), missing await, null-forgiving, hardcoded
  connection string, unsafe, dynamic, #pragma warning disable,
  [SuppressMessage], SQL concatenation), each smell labelled inline
- sample_csharp_clean.cs: the same code refactored per the standards in
  references/coding_standards.md — verifies the analyzer produces 0 HIGH
  smells on idiomatic code

expected_outputs/:
- sample_csharp_smells_quality.json: committed analyzer output for the
  smells fixture (F/45, 3 HIGH smells)
- sample_csharp_clean_quality.json: committed analyzer output for the
  clean fixture (A/98, 0 HIGH smells)

These act as a regression harness: diff the live output against the
committed JSON to detect any behaviour change in the analyzer.

scripts/code_quality_checker.py:
- Add _strip_csharp_comments() that removes // line and /* */ block
  comments before running C#-specific regex detectors. Fixes false
  positives where comment prose ("// FIX: await instead of .Result")
  matched a detection pattern.

SKILL.md:
- New ## Examples section pointing at the fixtures + showing how to
  reproduce the expected output with diff
- TOC updated to list "C# / .NET Review Notes" and "Examples"

README.md (new):
- Quick-reference card with how-to, 3 worked examples (one per script),
  pointer to fixtures, pointer to references

Phase re-scores after this change:
- Structure: 86.4/GOOD → 91.3/EXCELLENT (+4.9)
- Quality:   54.8/D    → 72.5/B-       (+17.7)
- Scripts:   3/3 PASS (unchanged)
- Security:  0/0       (unchanged)
2026-05-23 02:24:39 +00:00
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
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
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
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