439 Commits

Author SHA1 Message Date
xiaolei
26e12f33fa fix(skill): surface ps1 delete errors + replace removed wmic CPU detection
Greptile review:
- slim_dist.ps1: ErrorActionPreference SilentlyContinue -> Continue so failed
  deletes are reported instead of showing a false success banner
- build_optimized.bat: wmic is removed on Windows 11 22H2+; use the built-in
  %NUMBER_OF_PROCESSORS% env var (with a fallback) so --jobs is not silently 0
2026-06-16 09:17:18 +08:00
xiaolei
b9e5924e5e fix(skill): remove broken routing reference to non-existent python-installer-packaging
cubic P2: the fallback skill `python-installer-packaging` does not exist in the
repo, creating a broken routing dependency. Replace both references (description
+ When to Activate) with self-contained scoping language that keeps the
"advanced optimization only" gating without pointing at a missing skill.
2026-06-16 09:05:29 +08:00
xiaolei
24dff3a1e3 fix(skill): English description, clean placeholders, green CI for generating-python-installer
Addresses PR review feedback (English description + cleaned placeholders + CI green)
and the inline bot findings.

- Add English description and canonical "When to Activate" / "How It Works" /
  "Examples" sections for auto-activation; keep the existing Chinese content
- Replace the "某商业级桌面应用" placeholder with a concrete anonymized reference
  ("参考项目" / "生产级 PySide2 桌面应用, 323 MB")
- build_optimized.bat: compute dist size via PowerShell instead of parsing
  `dir` output with the Chinese-locale string `find "个文件"` (breaks on
  non-Chinese Windows)
- slim_dist.ps1: keep entry_points.txt in .dist-info (read at runtime by
  importlib.metadata; deleting it breaks plugin discovery)
- Inno Setup: default the bundled VC++ redistributable to x86 to match the
  recommended 32-bit build and comment out ArchitecturesInstallIn64BitMode,
  with notes on switching to x64 for 64-bit builds (fixes runtime-arch mismatch)
- markdownlint: blank lines around tables (MD058)
- unicode-safety: strip emoji / U+FE0F variation selectors per repo policy
- Sync skill catalog counts 249 -> 250 across README / AGENTS / plugin /
  marketplace manifests
2026-06-16 09:05:29 +08:00
Seekers2001
d1c454ac44 Add generating-python-installer skill (Nuitka commercial packaging) 2026-06-16 09:05:02 +08:00
Affaan Mustafa
6e2544ffa2 chore: reconcile publish/agent surfaces after PR batch
- agent.yaml: register epic-* commands (#2236) and vue-review (#2241)
- package.json files: drop stray skills/ml-adoption-playbook entry (follows orphan-skill publish pattern; not in install-modules.json)
- unicode-safety: strip decorative emoji from dashboard-web.js (#2100) and brand-discovery refs (#2221) to pass the CI gate
- agent-compress: raise catalog token canary 5000 -> 6000 for the 67-agent catalog

Full suite green (2836/2836).
2026-06-15 14:21:28 -04:00
Affaan Mustafa
141286a02a Merge pull request #2234 from BERORINPO/fix/skill-origin-to-metadata
fix(skills): move top-level origin frontmatter key under metadata (spec compliance). tdd-workflow conflict resolved keeping #2235 argument-hint + metadata.origin.
2026-06-15 14:09:17 -04:00
Affaan Mustafa
304a346aee Merge pull request #2189 from affaan-m/feat/taste-skill
feat: add taste skill — music-video creative direction. Catalog counts reconciled.
2026-06-15 14:08:24 -04:00
Affaan Mustafa
1a08a21ac0 Merge pull request #2241 from itkdm/feat/add-vue-ecosystem
feat: add Vue ecosystem review support (vue-reviewer agent, /vue-review command, vue-patterns skill). Duplicate rules/vue/* kept from #2250; catalog counts reconciled.
2026-06-15 14:07:31 -04:00
Affaan Mustafa
c8395472bf Merge pull request #2221 from hretheum/feat/add-brand-discovery-competitive-skills
feat(skills): add brand-discovery and competitive benchmarking pipeline. Catalog counts reconciled.
2026-06-15 14:06:31 -04:00
Affaan Mustafa
1705cb72f0 Merge pull request #2220 from lamenting-hawthorn/feat/agent-self-evaluation
feat(skills,agents): add agent-self-evaluation skill and agent-evaluator persona. Catalog counts reconciled.
2026-06-15 14:06:09 -04:00
Affaan Mustafa
d18afa7294 Merge pull request #2202 from stroland02/feat-ml-adoption
feat(skills): add ml-adoption-playbook skill. Catalog manifests/counts reconciled via catalog:sync.
2026-06-15 14:05:18 -04:00
James M. ZHOU
7ca23623d9
docs: add MCP server and tools integration for tinystruct (#2244)
* docs: add MCP server and tools integration for tinystruct

* Update the doc to specify the package for apis and security reminder, checks for prompt.
2026-06-15 14:01:12 -04:00
Hawthorn
2bf61ee2d7
docs(skills): document tdd plan handoff evidence (#2235)
* docs(skills): document tdd plan handoff evidence

Address issue #2138 by clarifying how tdd-workflow should continue from a plan file, preserve human-readable test guarantees, and retain RED/GREEN evidence across squash merges.

* docs(skills): harden tdd plan handoff guidance

Address review feedback on #2235: use angle-bracket argument hint, treat plan files as untrusted input, and prefer project-local documentation paths for TDD evidence reports.

* docs(skills): clarify plan handoff injection guard

Address review feedback by explicitly stating that plan file content is data, not AI instructions, and that validation commands from untrusted plans require sanitization and approval before execution.

* Update skills/tdd-workflow/SKILL.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs(skills): address tdd workflow review nits

Clarify plan handoff safety decisions, remove redundant untrusted-input wording, and show consistent TDD evidence path examples.

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-06-15 14:01:07 -04:00
Burak Bayır
94eb953414
docs: add TweetClaw social evidence handoff (#2199)
Co-authored-by: kriptoburak <kriptoburak@users.noreply.github.com>
2026-06-15 14:01:02 -04:00
Xuan-Ce Wang
051e257a0f
feat(browser-qa): read-only safety default, baseline-or-die, honest a11y scope (#2186)
Additive-only hardening of skills/browser-qa/SKILL.md.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 13:49:51 -04:00
OrbisAI Security
cf59d0d283
fix: sanitize subprocess call in runner.py (#2149)
* fix: V-001 security vulnerability

Automated security fix generated by OrbisAI Security

* fix: sanitize subprocess call in runner.py

The runner

* fix: address PR review comments on V-001 allowlist and test coverage

Remove dangerous interpreters (python, python3, node, curl, wget) from
ALLOWED_SETUP_EXECUTABLES — they can execute arbitrary code via argument
flags and are not needed for sandbox setup. Rewrite test_invariant_runner
to call _setup_sandbox directly instead of spawning runner.py as a
subprocess (which had no __main__ entrypoint and never exercised the fix).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 13:49:45 -04:00
He Dong
c3fd4137b9
fix(skills): replace star ratings with ASCII N/5 (#2194)
Change-Id: I72b7d094bb982070706595255536b69aa5998862
2026-06-15 13:48:54 -04:00
Bujidao
86e2a2061a feat: add Vue ecosystem review support 2026-06-12 19:14:31 +08:00
Bujidao
fe2d6656a3 feat(skills): add vue-patterns skill for Vue.js 3 best practices
Add skills/vue-patterns/SKILL.md covering:
- Project structure (feature-first layout, file naming)
- Component architecture (SFC order, presentational vs container, props/emits)
- Composables (use prefix, MaybeRef/toValue, cleanup, vs mixins)
- State management decision tree (local → props → provide/inject → Pinia → server state)
- Vue Router patterns (lazy loading, navigation guards, reactive params)
- Template patterns (v-if/v-else, v-show, v-for, v-model with defineModel)
- Performance techniques (shallowRef, v-memo, v-once, KeepAlive, Suspense)
- Testing stack and patterns (Vitest, Vue Test Utils, Pinia testing)
- Nuxt-specific patterns (auto-imports, useAsyncData, server routes, runtime config)
- Vue 3.5+ new APIs section: reactive props destructure, useTemplateRef,
  onWatcherCleanup, useId, defer Teleport, lazy hydration
- Anti-patterns table with Vue 3.5+ version-specific notes
2026-06-12 17:54:28 +08:00
Affaan Mustafa
7777656bf5
fix: context-size /compact trigger, Codex marketplace plugin path, live README badges (#2237)
- suggest-compact hook now reads the latest usage record from the session
  transcript and suggests /compact at a window-scaled token threshold
  (160k/200k window, 250k/1M window; COMPACT_CONTEXT_THRESHOLD and
  COMPACT_CONTEXT_INTERVAL overridable), re-firing per 60k-token growth
  bucket; tool-call count stays as the secondary signal (#2155)
- Codex repo marketplace now points at ./plugins/ecc instead of ./ — Codex
  never discovers plugins whose local marketplace source.path is the
  marketplace root (verified on Codex CLI 0.137.0); plugins/ecc is a thin
  folder referencing root skills/.mcp.json per maintainer direction on
  #2097; docs flag plugin mode as experimental with the upstream blocker
  openai/codex#26037 linked (#2128)
- README badges for installs/stars/forks now use shields endpoint badges
  backed by api.ecc.tools (live install count 3,712 vs the stale static
  150), which also eliminates shields' 'Unable to select next GitHub token
  from pool' render in the stars badge

Closes #2155
Closes #2128
2026-06-11 16:21:53 -04:00
Eryk Orłowski
f810c19c13 fix(ci): catalog sync, markdownlint, unicode safety, unsupported frontmatter key
catalog:sync: update skill count 261→265 in README.md, AGENTS.md,
docs/zh-CN/AGENTS.md, .claude-plugin/plugin.json

markdownlint:
- MD009: strip trailing spaces in 10_purpose-why, 20_positioning,
  40_personality-archetype, 50_voice-tone, 60_narrative-story, 90_SYNTHESIS
  (both skills/ and .agents/skills/ copies)
- MD037: wrap ___ placeholders in backticks in 70_founder-tension.md:39
- MD028: replace blank lines inside blockquotes with bare > in 90_SYNTHESIS.md

unicode-safety: replace U+2194 (↔) with ASCII <-> in 50_voice-tone.md and
competitive-report-structure/SKILL.md (both copies)

codex-validator: remove unsupported `origin: community` key from
brand-discovery, competitive-platform-analysis, competitive-report-structure,
benchmark-methodology SKILL.md files (both copies)
2026-06-11 21:58:42 +02:00
Eryk Orłowski
ccce25fe2b fix(skills): address bot review findings post-943b299
- competitive-platform-analysis: add ## Examples section per ECC
  guidelines (8-axis taxonomy walkthrough + pre-filter scoring matrix)
- competitive-report-structure: clarify dimension 9 poles are client-
  specific (e.g., Memorability/Hireability) not hard-coded names
- brand-discovery: fix terminal state — set inProgressModule to null
  after 90_SYNTHESIS.md is complete to prevent misleading resumption

All fixes mirrored to .agents/ copies.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:58:28 +02:00
Eryk Orłowski
2f17184cce fix(skills): address coderabbitai + cubic-dev-ai review findings
- marketplace.json: update skill count 261 → 265
- 90_SYNTHESIS.md (both copies): add required ## Raw / ## Synthesis
  wrappers per module contract; add Aaker brand system section (4b)
  covering archetype, identity, associations, equity (Module 40 output)
- brand-discovery/SKILL.md: add terminal module handling for 90_SYNTHESIS
  (nextModule=null, completedModules includes 90); add path traversal
  validation rules for participant, moduleFile, outputPath in multi-founder
  mode
- competitive-platform-analysis/SKILL.md (both copies): fix malformed
  markdown emphasis (stray * after "substitutes:")
- competitive-report-structure/SKILL.md (both copies): clarify heatmap
  column for dimension 9 — two poles (Memorability + Hireability) must be
  represented as separate sub-columns, not averaged
- 40_personality-archetype.md (both copies): join split heading onto one line
- 60_narrative-story.md, 70_founder-tension.md (both copies): add trailing
  newline at EOF

Duplicate .agents/ ↔ skills/ copies are intentional (Codex mirror);
.agents/ strips `origin: community` per Codex allowlist.
2026-06-11 21:58:04 +02:00
Eryk Orłowski
fe37e5426a feat(skills): add brand-discovery and competitive benchmarking pipeline
Adds four community skills covering brand identity discovery and a
three-skill competitive benchmarking pipeline.

**brand-discovery** — Adaptive multi-session brand identity interview
spanning 8 modules (purpose, positioning, audience, personality, voice,
narrative, founder-brand tension, synthesis). Uses laddering, 5 Whys,
and projective techniques. State persisted to disk via state.json so
sessions resume across conversations without losing elicited knowledge.
Frameworks: Sinek, Dunford, Baker, Enns, Kapferer, Aaker, Neumeier,
Mark & Pearson, Lencioni. Includes 8 module output templates in
references/.

**competitive-platform-analysis** — Scopes and tiers a competitor set
before benchmarking begins. Categorizes candidates along 8 generic
creative-industry axes (positioning stance, specialization, size/model,
engagement format, distinctiveness posture, evidence model, brand
strength, market/reach) into Direct / Adjacent / Aspirational tiers.
Includes a pre-filter scoring matrix. First step in the pipeline.

**benchmark-methodology** — Scores each competitor across 9 weighted
dimensions (positioning 18%, brand voice 15%, visual craft 15%, offer
packaging 12%, evidence 12%, enterprise-readiness 10%, thought
leadership 8%, pricing 5%, client's strategic tension 5%) with explicit
1–5 rubrics and bias controls. Produces one profile card per competitor.

**competitive-report-structure** — Assembles scored cards into a
decision-grade report: executive summary, landscape map, competitor
tiers, heatmap matrix, deep dives, white-space and threats, strategic
recommendations, sources appendix.

brand-discovery complements brand-voice (ECC): brand-voice extracts a
style profile from existing source material; brand-discovery elicits
identity from scratch through structured interviews when no prior
material exists.

A competitive set scoped without the client's positioning brief is
noise, not intelligence — each skill enforces this by requiring the
brief before proceeding. The 9-dimension scoring framework deliberately
reports the client's strategic tension as two separate poles (never
averaged) because the gap between them is the strategic finding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:57:55 +02:00
Sebastian
08ee253816
Fix formatting issue (trailing newline) in SKILL.md 2026-06-11 11:39:26 -04:00
Hawthorn
149be89d39 fix: address final lint blockers for agent self-evaluation
- Replace U+274C cross-mark examples with ASCII FAIL: prefixes
- Ensure agent-evaluator markdown ends with trailing newline
- Replace markdown placeholder underscores with bracketed placeholders to satisfy markdownlint MD037
2026-06-11 17:58:57 +05:30
BERORINPO
db7f2a6fd5 fix(skills): move top-level origin frontmatter key under metadata
The official Agent Skills spec (agentskills.io/specification) whitelists exactly
6 top-level frontmatter keys (name/description/license/compatibility/metadata/
allowed-tools). A top-level `origin` key fails the official validator
(anthropics/skills quick_validate.py ALLOWED_PROPERTIES; skills-ref validate).

This moves `origin: X` -> `metadata.origin: X` across the canonical skills/
tree, preserving each value verbatim. Frontmatter-only, minimal diff.

- 251 SKILL.md updated (242 new metadata block, 9 appended to existing metadata)
- origin values preserved verbatim (verified 251/251)
- YAML validated on all changed files
- scoped to canonical skills/ only (docs/<lang> translations + tool mirrors
  .cursor/.kiro/.agents left untouched; presumably regenerated from canonical)

Addresses #2233
2026-06-11 21:12:21 +09:00
tongshu2023
66ad878e68
feat(skills): add config-gc skill (#2216)
* feat(skills): add config-gc skill

Garbage collection for Claude Code configuration sprawl: 8 scan
channels (skills, memory, hooks, permissions, MCP, reminders,
project history, caches), confirm-each-deletion human-in-the-loop,
soft-delete with undo log. Subtractive counterpart to
workspace-surface-audit and configure-ecc.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(skills): address review feedback on config-gc

- Replace invalid comment-out strategy for JSON permission files with
  backup + gc_log entry + jq array removal (cubic P1)
- Swap GNU-only find -printf for portable du -k (works on macOS/BSD)
- Capture gc date once into a variable so trash dir and undo log agree
- Simplify shadowed-permission detection with jq index() guard

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 01:01:18 -04:00
Affaan Mustafa
6319c7d309
fix: stability batch — hook stdin truncation, Codex exa TOML, Stop hook JSON, GateGuard repetition (#2227)
* fix(hooks): fail open on oversized stdin instead of echoing truncated JSON (#2222)

run-with-flags.js capped stdin at 1MB but every fallthrough path still
echoed the truncated string to stdout. The harness parses hook stdout as
JSON, got a document cut mid-stream, and blocked the tool call — so any
Edit/Write with a >1MB hook payload was permanently blocked by every
registered pre-write hook, before ECC_HOOK_PROFILE / ECC_DISABLED_HOOKS
gating could run.

- Exit 0 with empty stdout (no opinion) when the stdin cap trips, before
  any echo or gating logic.
- Flush stdout via write callback before process.exit: exiting right
  after stdout.write() dropped everything past the ~64KB pipe buffer,
  cutting even sub-cap pass-through payloads mid-JSON.

Regression tests cover the enabled, disabled, and missing-arg paths for
oversized payloads plus full echo of sub-cap >64KB payloads.

* fix(codex): stop emitting invalid exa url entry, align merge with connector policy (#2224)

The Codex MCP merge declared exa with a url key, but Codex's
[mcp_servers.*] TOML schema is stdio-only — the url key makes the
entire config.toml fail to load, bricking both the codex CLI and the
desktop app. Every install/update re-injected the line because the
urlEntry branch treated the broken entry as present.

- ECC_SERVERS now emits only the current default set per
  docs/MCP-CONNECTOR-POLICY.md: chrome-devtools (stdio, command/args).
  Retired servers (supabase, playwright, context7, exa, github, memory,
  sequential-thinking) are never re-emitted; existing user-managed
  entries are untouched.
- The merge now repairs the exact ECC-emitted broken form (url-only
  exa entry) on every run so re-running the installer fixes broken
  configs instead of preserving them. User stdio exa entries
  (command + mcp-remote) are left alone.
- check-codex-global-state.sh requires chrome-devtools instead of the
  retired set, and flags url-only exa entries with a repair hint.

Tests cover repair, re-run idempotence, stdio-entry preservation, and
no-retired-server emission in add, update, dry-run, and disabled modes.

* fix(hooks): never echo truncated stdin from Stop hooks (#2090)

Stop hooks follow the ECC pass-through convention (echo stdin on
stdout), but every echoing Stop hook capped stdin and echoed the capped
string. The Stop payload carries last_assistant_message, so a long
final assistant message produced a JSON document cut mid-stream on
stdout, which the harness reports as 'Stop hook error: JSON validation
failed' across the whole Stop chain.

Reproduced: a Stop payload with a >64KB last_assistant_message run
through run-with-flags + cost-tracker emitted exactly 65536 bytes of
invalid JSON (cost-tracker capped stdin at 64KB — far below realistic
Stop payloads).

- cost-tracker: raise the cap to 1MB (matching all other hooks) and
  suppress the pass-through echo when stdin was truncated.
- check-console-log, stop-format-typecheck, desktop-notify: suppress
  the echo when stdin was truncated; flush stdout before process.exit
  so sub-cap payloads are not cut at the ~64KB pipe buffer.
- All hooks keep exiting 0 (fail-open); diagnostics go to stderr.

New stop-hooks-stdout test asserts the contract for every registered
Stop hook: stdout is empty or valid JSON, exit code 0 — for realistic
100KB payloads and oversized >1MB payloads, via the production runner
and via direct invocation. Updated the old hooks.test.js case that
codified the truncated-echo behavior.

* fix(hooks): dampen GateGuard fact-force repetition in long sessions (#2142)

In long autonomous sessions the fact-force gate produced 10+
near-identical 'state facts -> blocked -> restate -> retry' blocks in
one context window, which measurably raises the odds of the model
collapsing into a degenerate single-token repetition loop.

- Track a per-session fact_force_denials counter in GateGuard state
  (merged max across concurrent writers, reset with the session, robust
  to malformed on-disk values).
- The first GATEGUARD_FACT_FORCE_FULL_DENIALS denials (default 3) keep
  the full four-fact block; later denials emit a condensed single-line
  message that carries the denial ordinal, so consecutive denials are
  structurally different and never textually identical.
- True retries of the same target remain allowed without re-prompting
  (unchanged). Destructive-Bash and routine-Bash gates are unchanged,
  as are the ECC_GATEGUARD=off / ECC_DISABLED_HOOKS escape hatches.

Eight new tests cover budget counting, condensed format, ordinal
advancement, retry pass-through, env tuning, malformed state, MultiEdit
dampening, and destructive-gate exemption.

* fix(hooks): keep security hooks able to block on oversized stdin (#2222)

Refine the truncation fail-open: instead of skipping the hook entirely,
the runner now suppresses only its own raw-echo when stdin was
truncated. The hook still executes and receives the truncated flag
(run() context / ECC_HOOK_INPUT_TRUNCATED), so config-protection keeps
blocking truncated protected-config payloads (its test requires exit 2)
while pass-through hooks fail open with empty stdout as before.

* style: apply repo formatter to touched hook files
2026-06-11 00:31:33 -04:00
Sebastian
515c275b30
Merge branch 'main' into feat-ml-adoption 2026-06-10 17:51:17 -04:00
Hawthorn
8d360fb466 fix: address remaining review nits
- Add top-level hooks wrapper to second JSON example (consistent with hooks.json format)
- Extract hardcoded thresholds as module-level constants (WALL_OF_TEXT_WORDS,
  SUMMARY_CHECK_WORDS, SUMMARY_CHECK_FIRST_N, TASK_OUTPUT_RATIO_HIGH/MEDIUM)

Skipped (not applicable):
- 'Scoring defaults to 5/5' — by design for heuristic fallback; SKILL.md already
  documents pairing with LLM judge for production use
- '--output silently ignored' — already fixed by _read_input refactor (checks
  args.output directly, not elif args.task and args.output)
2026-06-10 18:27:27 +05:30
Hawthorn
f65ab491be fix(docs): clarify Stop event matcher is optional, not disallowed
Validator (scripts/ci/validate-hooks.js line 182-184) only errors when
matcher is missing for non-EVENTS_WITHOUT_MATCHER events. For Stop (in
EVENTS_WITHOUT_MATCHER), matcher is optional — presence is allowed and
validated for type correctness, absence is also accepted.
2026-06-10 18:21:12 +05:30
Hawthorn
7c0a0049a8 fix: address second-round review comments
- Replace httpx.Retry references with correct httpx API usage across all files
  (httpx has no built-in Retry class; use HTTPTransport/Limits instead)
- Fix _check_summary to check first 100 words (not 100 characters)
- Fix template to only show → improvement arrow for non-5 scores
- Clarify hook documentation: hook echoes reminder, does not run evaluator
- Add return type annotation to main()
- Make required parameter keyword-only in _read_file_or_text
2026-06-10 17:59:25 +05:30
Hawthorn
2ea4d779a3 fix: address self-evaluation review comments
- Clarify that agent-evaluator reads skills/agent-self-evaluation/SKILL.md directly
- Standardize on Conciseness terminology, including helper names
- Remove invalid Stop hook matcher and avoid unsupported command-expression matcher examples
- Add explicit hook-integration reference path in SKILL.md
- Add summary and self-check fields to evaluate.py output, template, and agent spec
- Refactor evaluate.py clarity and input parsing helpers
- Remove unused task parameter from check_completeness

Validation:
- python3 -m py_compile skills/agent-self-evaluation/scripts/evaluate.py
- evaluate.py high/low example smoke tests
- node scripts/ci/validate-agents.js
- node scripts/ci/validate-skills.js
- node scripts/ci/validate-hooks.js
- node scripts/ci/validate-no-personal-paths.js
2026-06-10 17:25:24 +05:30
Hawthorn
c0f651cf85 fix: align report format across evaluate.py, agent spec, and template
- evaluate.py: add CRITICAL ISSUES (axes ≤ 2) section, VERDICT line
- agent-evaluator.md: match format_report output exactly (title, evidence markers, bar graphs)
- templates/evaluation-report.md: match evaluate.py output format
- All now produce identical AGENT SELF-EVALUATION REPORT structure

Single authoritative format: evaluate.py's format_report() output.
2026-06-10 17:11:44 +05:30
Hawthorn
bd45947941 feat(skills,agents): add agent-self-evaluation skill and agent-evaluator persona
Add structured 5-axis self-evaluation framework for agent output quality:
- Accuracy, Completeness, Clarity, Actionability, Conciseness
- Evidence-based scoring with concrete improvement suggestions
- Standalone Python evaluator script with keyword heuristics
- Detailed scoring anchors reference guide
- High-score and low-score annotated examples
- Reusable evaluation report template
- Optional hook integration for session-stop evaluation

Agent persona (agent-evaluator) provides a dedicated subagent
for applying the rubric to agent output with tool-backed verification.

All files tested: Python script runs, examples score correctly
(high 4.2, low 3.4), frontmatter parses clean, 183 lines (under 500).
2026-06-10 16:56:18 +05:30
ECC Test
3c5bcc2b66 security: harden advisory intake and dependency coverage 2026-06-09 20:46:14 -04:00
Sebastian Roland
d4ed8baef3 feat(skills): add ml-adoption-playbook skill
- Added ml-adoption-playbook to structure the agentic workflow for adopting ML into non-ML projects.

- Registered the ML playbook in package.json.

- Synchronized catalog counts across documentation and plugin manifests.
2026-06-08 22:48:54 -04:00
Affaan Mustafa
194eeb952f feat: add taste skill for music-video creative direction
Distills a named-genre aesthetic vocabulary (angelcore / cloud-trance /
hyperpop family), a mood + color + light system, and a beat-synced editing
grammar into a creative-direction layer that sits on top of the existing ECC
video skills and chains them (video-editing -> fal-ai-media ->
remotion-video-creation -> motion-* -> content-engine) into one pipeline.

Includes beat math (138 BPM), a section-by-section shot plan, fal.ai prompt
presets per mood, FFmpeg reframe/beat-cut recipes, a Remotion beat-synced
composition skeleton, and a companion genre-taxonomy reference.
2026-06-07 12:43:04 -04:00
David W Miller
90dfd9505d
feat: add orch-* orchestrator skill family (#2153)
* feat: add orch-* orchestrator skill family

Lightweight wrappers that orchestrate existing ECC agents through a gated Research -> Plan -> TDD -> Review -> Commit pipeline, right-sized per task.

- orch-pipeline: shared engine (phases, size classifier, two gates, agent map)
- orch-add-feature/change-feature/fix-defect/refine-code/build-mvp: thin wrappers delegating to the engine

* chore: register orch-* family in catalog, command registry, and agent.yaml (post-rebase onto green main)

---------

Co-authored-by: ECC Test <ecc@example.test>
2026-06-07 16:15:31 +08:00
Affaan Mustafa
e755c5f72b
fix: make plugin hooks run on Node 21+ and green the suite under modern Node (#2184)
ROOT CAUSE: hooks load plugin-hook-bootstrap.js via
`node -e "...; process.argv.splice(1,0,s); require(s)"`. On Node 21+,
require.main is `undefined` under --eval, so the `if (require.main === module)`
guard was false and main() never ran — every plugin hook silently no-op'd
(e.g. the MCP-health PreToolUse hook stopped blocking). CI (Node 18/20) hid
this; it only surfaces on Node 21+. Fix: also run main() when require.main is
undefined (the eval-bootstrap case), while staying dormant on real imports.

Also clears pre-existing main debt the full local suite enforces:
- catalog:sync — README/docs agent+skill counts drifted after recent merges
- tests/ci/supply-chain-watch-workflow: update checkout SHA to the merged v6.0.3 (#2183)
- markdownlint + check-unicode-safety --write across docs/skills

Suite: 2683/2683 green under Node v25; lint + unicode clean.

Co-authored-by: ECC Test <ecc@example.test>
2026-06-07 16:05:28 +08:00
elmochilyas
06c376ae8b
feat(skills): add laravel-security, laravel-tdd, and php-reviewer agent (#2122)
* feat(skills): add laravel-security, laravel-tdd, and php-reviewer agent

* fix: resolve code review findings across laravel-security, laravel-tdd, and php-reviewer

- laravel-security: replace env() with config() in runtime code,
  replace wildcard trusted proxies with CIDR ranges, remove blanket
  api/* CSRF exclusion, fix validated() return type, add null-safe
  rate limiter user access, sync mimes/extensions allowlists,
  replace #[Encrypted] with ShouldBeEncrypted, fix RateLimited args
- laravel-tdd: remove global withoutExceptionHandling() from setUp,
  remove contradictory assertNothingOutgoing(), fix undefined
  variable, replace invalid PHPUnit --min-coverage flag
- php-reviewer: fix Python contamination, add automated check
  requirement to approval criteria

* fix: align php-reviewer approval criteria and use config dot-notation keys

- agents/php-reviewer.md: sync approval criteria with .txt file version
  (add automated checks requirement for consistency across harnesses)
- skills/laravel-security/SKILL.md: replace raw env names with proper
  Laravel dot-notation config keys (app.key, services.stripe.*, etc.)
  so config() returns valid values instead of null

* fix: remove unnecessary secret validation for SMTP password
2026-06-07 13:29:12 +08:00
V Karthikeyan Nair
66e28b5fb1
feat(skills): add fastapi-patterns skill (#2129) 2026-06-07 13:29:10 +08:00
Adna Salković
07812091aa
feat(skills): add codehealth-mcp skill and CodeScene MCP config (#2077)
* feat(skills): add codehealth-mcp skill and CodeScene MCP config

* docs(skills): add When to Use, How It Works, and Examples sections

* docs(skills): clarify MCP opt-in, data boundaries, and offline behavior

Address security review on PR #2077: no bundled credentials, document what
tools read locally, failure behavior when MCP is unavailable, and README
wording that Code Health MCP is optional and not enabled by default.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: adnasalk-notus <adna.salkovic@notus.hr>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 13:26:54 +08:00
Andrea Cavallo
ff1bfa1b77
feat: add intent-driven-development skill (#2092)
* feat: add intent-driven-development skill

Converts ambiguous feature or engineering requests into scoped,
verifiable acceptance criteria before implementation starts.

- Chooses between Quick Capture (low/moderate risk) and Full
  Acceptance Brief (security, data, migration, cross-system changes)
- Reads repo context before asking questions; only asks what cannot
  be inferred
- Non-blocking by default: records criteria and proceeds unless a
  real risk requires confirmation
- Rule 9: when an AC fails mid-implementation due to architectural
  constraints, marks it [revised], updates scope/verification method,
  and re-presents only changed criteria rather than silently dropping
- Output template includes Revision Log for traceability across
  multiple implementation cycles

* fix: add canonical When to Activate, How It Works, and Examples sections

Required for auto-activation mechanism detection per CONTRIBUTING.md
and existing skill conventions. Sections inserted after the intro
and before Operating Rules.

* fix: strengthen intent-driven-development skill per review

Address skill-quality review feedback on the intent-driven-development PR:

- Business/product constraints: add Operating Rule 2 forbidding inference
  of business rules, compliance/SLAs, pricing, retention, prioritization,
  and target users from code; surface the technical-vs-business split in
  How It Works, Discover Context, and a dedicated 'supplied, not inferred'
  section in the brief template.
- Eval-style pass/fail: add a Pass/Fail Examples section (failing vs
  passing AC, plus a misplaced business-rule context entry) and a 5-point
  Pass/Fail Rubric users can apply to the output.
- Renumber Operating Rules 1-10 accordingly; markdownlint clean.
2026-06-07 13:26:45 +08:00
linsy
28b78dd7bf
feat: add inherit-legacy-style — prevent AI code style drift in legac… (#2098)
* feat: add inherit-legacy-style — prevent AI code style drift in legacy projects

- 4-dimension meta-architecture scan (File Anatomy, State & Control Flow, Infrastructure, Error Handling)
- Scale-adaptive (small=full read, large=smart sampling)
- Signal-threshold noise reduction with one-at-a-time grilling protocol
- Generates .ai-style-rules.md with persistent CLAUDE.md hook
- Language- and framework-agnostic

* fix: add AskUserQuestion to allowed-tools, add When to Use/How It Works/Examples sections per bot review

---------

Co-authored-by: wulinzai <linsywu@gmail.com>
2026-06-07 13:26:40 +08:00
xiaoxi
e4dfc1679b
fix: surface legacy data warning in instinct-cli status (#2127)
* fix: surface legacy data warning in instinct-cli status (#2036)

When the data directory moved from ~/.claude/homunculus/ to the
XDG-compliant ~/.local/share/ecc-homunculus/, legacy installs with data
still in the old path saw "No instincts found" with no explanation.

Add _warn_legacy_data() to cmd_status so users get a clear, actionable
warning pointing them to the migration script or the CLV2_HOMUNCULUS_DIR
override. Wrap the directory scan in try/except to handle permission
errors gracefully.

Closes #2036

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: address review feedback — drop unused f-strings, resolve absolute migrate path

Remove extraneous f-prefix from strings without interpolation (ruff F541).
Resolve migrate-homunculus.sh path relative to instinct-cli.py instead of
hard-coding a repo-relative path that only works from the repo root.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: quote migrate script path to handle spaces

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: kky <lingmu141592@gmail.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 13:26:22 +08:00
nyxst4ck
3248ac69f0
docs: quote pip extras install example (#2130)
Co-authored-by: nyxst4ck <289980115+nyxst4ck@users.noreply.github.com>
2026-06-07 13:26:20 +08:00
konstapukarifastnetfi
8b24f63ede
fix: refresh stale technical content in agents, rules, and skills (#2168)
Several published examples contained APIs that no longer exist, code that
does not run, or model versions that drifted from reality:

- agents/performance-optimizer.md used the web-vitals v3 API
  (getCLS/getFID/getLCP/getFCP/getTTFB) and reported FID. web-vitals v4
  renamed the imports to onCLS/onINP/onLCP/onFCP/onTTFB and FID was
  replaced by INP (target < 200ms)
- rules/common/performance.md pinned stale model versions in the
  model-selection guidance; refresh to the versions the repo itself uses
  (agent.yaml pins claude-opus-4-6) and add the PowerShell variant for
  MAX_THINKING_TOKENS next to the bash export
- skills/python-patterns/SKILL.md: both get_value examples referenced
  default_value without declaring the parameter (NameError); add
  default_value: Any = None to the EAFP and LBYL signatures
- skills/frontend-patterns/SKILL.md: the custom useQuery example rebuilt
  refetch whenever callers passed inline fetchers/options, re-triggering
  the effect after every state update (infinite fetch loop). Keep the
  latest fetcher/options in refs so refetch stays referentially stable.
  The PASS-labelled useMemo example mutated its input with in-place sort;
  copy before sorting
- skills/coding-standards/SKILL.md repeated the same PASS-labelled
  in-place-sort-in-useMemo example; same fix
- rules/typescript/security.md used a vendor-specific OPENAI_API_KEY in
  generic guidance; switch to a neutral API_KEY

Every hand-maintained copy of the affected content is synced in the same
change: locale mirrors (ja-JP, ko-KR, pt-BR, tr, zh-CN, zh-TW - each only
where it carries the affected file) and the .agents/.kiro/.cursor harness
mirrors. Two structural divergences are left alone and noted here:
.kiro/steering/performance.md has no extended-thinking control list to
carry the PowerShell variant, and docs/zh-TW/rules/performance.md keeps an
older condensed thinking section without the budget-cap line.
rules/zh/performance.md is intentionally untouched - the rules/zh tree is
being retired in a separate change
2026-06-07 13:26:01 +08:00
konstapukarifastnetfi
36bec90d45
docs: align command docs with shipped behavior (#2169)
- multi-{plan,execute,backend,frontend,workflow}.md: add an in-file
  prerequisite note for the external ccg-workflow runtime. README.md already
  warns these commands need codeagent-wrapper and the .ccg prompt tree, but
  users meeting them via the installed slash commands never see the README;
  the commands-core module still installs all five by default
- quality-gate.md: describe what scripts/hooks/quality-gate.js actually does.
  The doc advertised '/quality-gate [path] [--fix] [--strict]' with lint/type
  checks, but the script reads the file path from hook stdin JSON, toggles
  behavior via ECC_QUALITY_GATE_FIX / ECC_QUALITY_GATE_STRICT env vars, and
  runs formatters only (Biome/Prettier, gofmt, ruff format)
- claude-devfleet SKILL.md: add a Setup section pointing at the DevFleet
  server repository (github.com/LEC-AI/claude-devfleet, already disclosed in
  mcp-configs/mcp-servers.json) plus the SECURITY.md port-verification note;
  the skill previously assumed a running instance with no way to obtain one
- regenerate docs/COMMAND-REGISTRY.json for the quality-gate description
2026-06-07 13:25:58 +08:00