@softspark/ai-toolkit 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/AGENTS.md +32 -19
  2. package/CHANGELOG.md +45 -0
  3. package/README.md +13 -12
  4. package/app/.claude-plugin/plugin.json +1 -1
  5. package/app/ARCHITECTURE.md +2 -2
  6. package/app/agents/code-reviewer.md +6 -7
  7. package/app/agents/frontend-specialist.md +33 -2
  8. package/app/agents/seo-specialist.md +1 -1
  9. package/app/personas/frontend-lead.md +48 -5
  10. package/app/skills/a11y-validate/SKILL.md +377 -0
  11. package/app/skills/a11y-validate/reference/aria-patterns.md +259 -0
  12. package/app/skills/a11y-validate/reference/eaa-compliance.md +252 -0
  13. package/app/skills/a11y-validate/reference/mobile-eaa.md +329 -0
  14. package/app/skills/a11y-validate/reference/wcag-2-1-aa.md +285 -0
  15. package/app/skills/a11y-validate/reference/wcag-2-2-aa.md +221 -0
  16. package/app/skills/a11y-validate/scripts/a11y-scanner.py +639 -0
  17. package/app/skills/clean-code/reference/python.md +3 -3
  18. package/app/skills/design-engineering/SKILL.md +2 -5
  19. package/app/skills/review/SKILL.md +30 -6
  20. package/app/skills/seo-validate/SKILL.md +460 -0
  21. package/app/skills/seo-validate/reference/core-web-vitals.md +445 -0
  22. package/app/skills/seo-validate/reference/geo-aeo-patterns.md +259 -0
  23. package/app/skills/seo-validate/reference/geo-guidelines.md +248 -0
  24. package/app/skills/seo-validate/reference/schema-types.md +465 -0
  25. package/app/skills/seo-validate/reference/spa-ssg-patterns.md +351 -0
  26. package/app/skills/seo-validate/reference/w3c-guidelines.md +289 -0
  27. package/app/skills/seo-validate/scripts/seo-scanner.py +549 -0
  28. package/bin/ai-toolkit.js +32 -5
  29. package/kb/reference/architecture-overview.md +3 -3
  30. package/kb/reference/cli-reference.md +1 -1
  31. package/kb/reference/codex-cli-compatibility.md +4 -0
  32. package/kb/reference/comparison.md +1 -1
  33. package/kb/reference/extension-api.md +2 -0
  34. package/kb/reference/skills-catalog.md +3 -1
  35. package/llms-full.txt +16 -6
  36. package/manifest.json +3 -3
  37. package/package.json +2 -2
  38. package/scripts/config_cli.py +4 -10
  39. package/scripts/config_resolver.py +23 -5
  40. package/scripts/doctor.py +76 -4
  41. package/scripts/hook_sources.py +3 -0
  42. package/scripts/inject_hook_cli.py +74 -1
  43. package/scripts/install.py +34 -3
  44. package/scripts/install_steps/ai_tools.py +79 -16
  45. package/scripts/install_steps/install_state.py +25 -0
  46. package/scripts/install_steps/markers.py +2 -1
  47. package/scripts/install_steps/project_registry.py +9 -0
  48. package/scripts/plugin.py +1 -1
  49. package/scripts/propagate_global.py +92 -0
  50. package/scripts/rule_sources.py +3 -2
  51. package/scripts/update_projects.py +7 -1
  52. package/scripts/url_fetch.py +5 -0
package/AGENTS.md CHANGED
@@ -446,6 +446,7 @@ Specialized agent personas — apply their expertise for relevant tasks:
446
446
 
447
447
  Skills are invocable commands or auto-loaded knowledge sources:
448
448
 
449
+ - **a11y-validate**: Validate code against accessibility standards: WCAG 2.1 Level AA, EN 301 549, and the European Accessibility Act (EAA / Directive EU 2019/882). Covers semantics, text alternatives, keyboard/focus, color/contrast, forms, media, ARIA, motion, mobile, and EAA documentation requirements. Framework-aware (React/Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue/React Native/Flutter/static HTML).
449
450
  - **agent-creator**: Creates new specialized agents with frontmatter, tool selection, and delegation guidance
450
451
  - **analyze**: Analyze code quality, complexity, and patterns
451
452
  - **api-patterns**: Loaded when user asks about REST API design or GraphQL patterns
@@ -523,6 +524,7 @@ Skills are invocable commands or auto-loaded knowledge sources:
523
524
  - **rust-patterns**: Loaded when user asks about Rust development patterns
524
525
  - **search**: Search the knowledge base with semantic and hybrid modes
525
526
  - **security-patterns**: Loaded when user asks about security, OWASP, or auth patterns
527
+ - **seo-validate**: Validate code against SEO best practices: W3C semantics, meta/OG tags, Schema.org, hreflang, Core Web Vitals (LCP/INP/CLS), resource hints, GEO, SPA/SSG/CSR crawlability, technical SEO, accessibility-for-SEO. Supports React/Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue/static HTML.
526
528
  - **skill-audit**: Scan skills and agents for security risks: dangerous patterns, secrets, excessive permissions
527
529
  - **skill-creator**: Create new skills from templates with guided workflow
528
530
  - **subagent-development**: Execute implementation plans using fresh subagents per task with two-stage review: spec compliance first, then code quality. Use when executing plans with independent tasks. Codex-adapted: uses native subagents and plan tracking.
@@ -583,24 +585,35 @@ Derived from the immutable safety constitution (5 articles):
583
585
 
584
586
  # Jira MCP Server
585
587
 
586
- Tools: `sync_tasks`, `read_cached_tasks`, `update_task_status`, `update_task`, `add_task_comment`, `reassign_task`, `get_task_statuses`, `get_task_details`, `get_project_language`, `log_task_time`, `get_task_time_tracking`, `list_comment_templates`, `add_templated_comment`, `create_task`, `search_tasks`
588
+ Tools: `sync_tasks`, `read_cached_tasks`, `update_task_status`, `update_task`, `add_task_comment`, `delete_task`, `delete_comment`, `reassign_task`, `get_task_statuses`, `get_task_details`, `get_project_language`, `log_task_time`, `get_task_time_tracking`, `list_comment_templates`, `add_templated_comment`, `create_task`, `search_tasks`
587
589
 
588
590
  ## Key Rules
589
591
 
590
- - **Always `sync_tasks` first** before reading -- cache may be stale.
591
- - **Language first:** before writing ANY comment, description, or task content, call `get_project_language(project_key)` or check the `language` field in `get_task_details` response. Write ALL content in the project's configured language. Never assume Polish or English always check first.
592
- - **Time format:** `"2h 30m"` -- hours and minutes only, never days.
592
+ - **Always `sync_tasks` first** before reading, because the cache may be stale.
593
+ - **Language first:** before writing ANY comment, description, or task content, call `get_project_language(project_key)` or check the `language` field in `get_task_details` response. Write ALL content in the project's configured language. Never assume Polish or English. Always check first.
594
+ - **Time format:** `"2h 30m"`, using hours and minutes only, never days.
593
595
  - **Status changes:** call `get_task_statuses` first to check valid transitions.
594
596
  - **Multi-instance:** project key determines which Jira instance is used (mapped in config.json).
595
597
  - **Comments are ADF:** `add_task_comment` converts markdown to ADF (Atlassian Document Format) automatically.
598
+ - **Delete guard:** `delete_task` is allowed only for the task creator, and `delete_comment` is allowed only for the comment author. Both require explicit `user_approved=true`.
596
599
  - **Templates:** use `list_comment_templates` to discover available templates, then `add_templated_comment` with `template_id` + `variables`.
597
600
 
601
+ ## Writing Style
602
+
603
+ - **Write like a real team member:** use plain, direct language that sounds like an engineer writing to another human, not like polished AI copy or marketing text.
604
+ - **No em dash and no double-hyphen separator in prose:** do not use those punctuation patterns in generated comments, descriptions, docs, or summaries. Use commas, periods, or parentheses instead.
605
+ - **Avoid stock AI phrases:** do not use phrases like "worth noting", "it is important to understand", "in today's dynamic environment", "overall", "in conclusion", or similar generic filler.
606
+ - **Prefer concrete wording:** use specific facts, actions, examples, and decisions instead of abstract claims or padded qualifiers.
607
+ - **Avoid repetitive rhythm:** do not make every sentence or bullet sound structurally identical. Vary sentence length and openings when writing longer text.
608
+ - **Keep summaries short:** do not add forced wrap-up paragraphs unless the user explicitly asks for a summary.
609
+ - **Use a workmanlike tone:** prefer a slightly rough, practical style over text that sounds overly smooth, symmetrical, or "LLM-clean".
610
+
598
611
  ## Workflow
599
612
 
600
- 1. `sync_tasks(jql="assignee=currentUser() AND status!=Done")` -- fetch fresh
601
- 2. `read_cached_tasks()` -- work offline
602
- 3. `get_task_details(task_key="PROJ-123")` -- deep dive (description + comments as markdown)
603
- 4. `update_task_status(...)` / `add_task_comment(...)` / `log_task_time(...)` -- mutate
613
+ 1. `sync_tasks(jql="assignee=currentUser() AND status!=Done")` to fetch fresh data
614
+ 2. `read_cached_tasks()` to work offline
615
+ 3. `get_task_details(task_key="PROJ-123")` for a deep dive into description and comments as markdown
616
+ 4. `update_task_status(...)` / `add_task_comment(...)` / `log_task_time(...)` to mutate data
604
617
 
605
618
  ## Comment Templates (built-in)
606
619
 
@@ -636,25 +649,25 @@ Tools: `sync_tasks`, `read_cached_tasks`, `update_task_status`, `update_task`, `
636
649
 
637
650
  ## Architecture
638
651
 
639
- Four layers -- each depends only on layers below:
652
+ Four layers. Each depends only on layers below.
640
653
 
641
- 1. **Types & Config** (`config/`, `errors/`, `*/types.ts`) -- pure data, zero runtime deps
642
- 2. **Infrastructure** (`connector/`, `cache/`, `adf/`, `templates/`) -- I/O and external APIs
643
- 3. **Business Logic** (`operations/`, `bulk/`) -- orchestrates infrastructure
644
- 4. **Entry Points** (`tools/`, `cli/`, `server.ts`) -- thin dispatchers
654
+ 1. **Types & Config** (`config/`, `errors/`, `*/types.ts`), pure data with zero runtime deps
655
+ 2. **Infrastructure** (`connector/`, `cache/`, `adf/`, `templates/`), I/O and external APIs
656
+ 3. **Business Logic** (`operations/`, `bulk/`), orchestrating infrastructure
657
+ 4. **Entry Points** (`tools/`, `cli/`, `server.ts`), thin dispatchers
645
658
 
646
659
  ## Coding Conventions
647
660
 
648
661
  - **Strict TypeScript**: `strict: true`, NO `any`, `readonly` interfaces, `import type`, `.js` imports
649
662
  - **Zod schemas** for all external data: `type Foo = z.infer<typeof FooSchema>`
650
663
  - **Error classes**: extend `JiraMcpError` with `code` property
651
- - **ADF round-trip**: `markdownToAdf()` for writes, `adfToMarkdown()` for reads -- NEVER throw
664
+ - **ADF round-trip**: `markdownToAdf()` for writes and `adfToMarkdown()` for reads. NEVER throw.
652
665
  - **InstancePool**: singleton, lazy connectors, dedup by URL
653
666
  - **Dual-write**: after Jira mutation, update local cache, return API result
654
667
  - **Dry-run default**: `--execute` required for destructive operations
655
668
  - **DI pattern**: handlers accept `deps?` parameter for testing
656
- - **Config path**: ALWAYS `~/.softspark/jira-mcp/` via `GLOBAL_CONFIG_DIR` -- no manual config, no env vars in MCP client setup
657
- - **SoftSpark standard**: all open-source tools use `~/.softspark/<tool-name>/` -- see SOP in rag-mcp `kb/procedures/softspark-config-standard.md`
669
+ - **Config path**: ALWAYS `~/.softspark/jira-mcp/` via `GLOBAL_CONFIG_DIR`, with no manual config and no env vars in MCP client setup
670
+ - **SoftSpark standard**: all open-source tools use `~/.softspark/<tool-name>/`. See SOP in rag-mcp `kb/procedures/softspark-config-standard.md`
658
671
 
659
672
  ## Testing
660
673
 
@@ -665,9 +678,9 @@ Four layers -- each depends only on layers below:
665
678
 
666
679
  ## KB & SOPs
667
680
 
668
- - `kb/reference/` -- architecture, api, configuration, adf, caching, templates
669
- - `kb/howto/` -- setup, multi-instance, cli-usage
670
- - `kb/procedures/` -- sop-pre-commit, sop-release, sop-post-release-testing
681
+ - `kb/reference/` for architecture, API, configuration, ADF, caching, and templates
682
+ - `kb/howto/` for setup, multi-instance usage, and CLI usage
683
+ - `kb/procedures/` for `sop-pre-commit`, `sop-release`, and `sop-post-release-testing`
671
684
 
672
685
  <!-- TOOLKIT:jira-mcp END -->
673
686
 
package/CHANGELOG.md CHANGED
@@ -7,6 +7,51 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v2.5.0 — Community Skills, Automated Scanners & Design Craft (2026-04-15)
11
+
12
+ ### Added
13
+ - **`/seo-validate` skill** (community PR #2) — 9-category SEO scanner: W3C semantics, meta/OG tags, Schema.org, hreflang, Core Web Vitals, GEO, SPA/SSG crawlability. Framework-aware (React/Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue).
14
+ - **`/a11y-validate` skill** (community PR #3) — 10-category accessibility scanner: WCAG 2.1 AA, WCAG 2.2 AA, EN 301 549, European Accessibility Act (EAA). Mobile-aware (React Native/Flutter).
15
+ - **`seo-scanner.py`** — automated stdlib-only SEO scanner script (9 checks, JSON output, CI exit codes).
16
+ - **`a11y-scanner.py`** — automated stdlib-only accessibility scanner script (10 checks, WCAG criterion mapping, contrast calculation, CI exit codes).
17
+ - **`wcag-2-2-aa.md`** reference — all 9 new WCAG 2.2 success criteria with failure patterns, grep patterns, and framework notes.
18
+ - **`geo-aeo-patterns.md`** reference — Answer Engine Optimization: AI answer engines, llms.txt, robots.txt AI bot directives, E-E-A-T signals.
19
+ - **Design Craft vocabulary** (community PR #4) — 7-domain impeccable design guidance in `frontend-specialist` agent and `frontend-lead` persona: typography, OKLCH color, spatial scale, motion, interaction, responsive, UX writing. AI-Native UI patterns section.
20
+
21
+ ### Changed
22
+ - **`code-reviewer` agent** — added Grep/Glob tools, rewrote Mandatory Protocol to use actual tools. Expanded review checklist: full OWASP Top 10, API/contract, concurrency/async, migration/schema.
23
+ - **`clean-code` python reference** — fixed invalid `any` type hint, modernized to PEP 604 syntax.
24
+ - **`design-engineering` skill** — fixed CSS hold-to-delete example (duplicate selector → proper `:active` override).
25
+ - **`review` skill** — fixed script path to use `CLAUDE_SKILL_DIR`.
26
+ - **`.gitattributes`** — added `merge=ours` for generated files to prevent contributor PR conflicts.
27
+ - **Misleading CLI outputs** fixed — plugin.py Codex status glob, --only help examples, install/update --local descriptions, doctor stale rules dr.warn(), config_cli phantom check.
28
+ - **`gemini` added to ALL_EDITORS** — `--editors gemini` no longer rejected by CLI validation.
29
+ - Skill count: 92 → 94 (31 task + 31 hybrid + 32 knowledge).
30
+
31
+ ---
32
+
33
+ ## v2.4.1 — Codex Global Install, Security Hardening & Editor Tracking (2026-04-15)
34
+
35
+ ### Added
36
+ - **Codex hook propagation** — `inject-hook` auto-propagates Codex-compatible events (`SessionStart`, `PreToolUse`, `PostToolUse`, `UserPromptSubmit`, `Stop`) to `~/.codex/hooks.json`. `remove-hook` cleans both targets.
37
+ - **Global editor tracking** — `ai-toolkit install --editors codex` installs editors globally (opt-in). Tracked in `state.json`, auto-refreshed on `update`. Default: Claude only.
38
+ - **Per-project editor tracking** — `install --local --editors` records editors in `projects.json`. `update` re-installs saved editors per project.
39
+ - **Auto-propagation** — `add-rule`, `remove-rule`, `mcp add` auto-propagate to globally installed editors via `propagate_global.py`.
40
+ - **Doctor Check 9** — URL hook sources health check with `--fix` re-fetch support.
41
+
42
+ ### Fixed
43
+ - **Tarball path traversal** — `_extract_tarball` rejects symlinks, absolute paths, and paths escaping dest directory.
44
+ - **Git clone URL validation** — `_resolve_git` enforces HTTPS-only, rejects `file://`, `ssh://`.
45
+ - **`dr.error()` crash** — `DiagResult` has no `error()` method; fixed to `dr.fail()`.
46
+ - **`refresh_url_hooks` missing timestamp update** — now calls `register_url_source` after re-fetch.
47
+ - **Defense-in-depth name validation** — `register_url_source()` rejects path traversal chars in both `hook_sources` and `rule_sources`.
48
+ - **Unused `execSync` import** — removed from CLI entry point.
49
+ - **URL truncation detection** — `url_fetch.py` raises `ValueError` when response exceeds 10MB.
50
+ - **MCP templates path** — corrected `app/plugins/mcp-templates/` → `app/mcp-templates/` in ARCHITECTURE docs.
51
+ - **MCP templates header count** — corrected 25 → 26 in `app/ARCHITECTURE.md`.
52
+
53
+ ---
54
+
10
55
  ## v2.4.0 — URL Hook Injection & Karpathy Coding Rules (2026-04-15)
11
56
 
12
57
  ### Added
package/README.md CHANGED
@@ -1,21 +1,22 @@
1
1
  # ai-toolkit
2
2
 
3
- > Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 92 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling — works with Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity, and Codex CLI, ready in 60 seconds.
3
+ > Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 94 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling — works with Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity, and Codex CLI, ready in 60 seconds.
4
4
 
5
5
  [![CI](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml/badge.svg)](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
- [![Skills](https://img.shields.io/badge/skills-92-brightgreen)](app/skills/)
7
+ [![Skills](https://img.shields.io/badge/skills-94-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-613%20passing-success)](tests/)
9
+ [![Tests](https://img.shields.io/badge/tests-618%20passing-success)](tests/)
10
10
 
11
11
  ---
12
12
 
13
- ## What's New in v2.4.0
13
+ ## What's New in v2.5.0
14
14
 
15
- - **URL hook injection** `ai-toolkit inject-hook https://...` with auto-refresh on every update (mirrors `add-rule` URL support)
16
- - **Shared URL fetch** extracted `url_fetch.py` for reuse across rule and hook URL sources
17
- - **Surgical Changes rule** — orphan cleanup protocol and "match existing style" in `common/coding-style.md`
18
- - **Goal-Driven Execution rule** — `step verify: check` pattern for multi-step tasks
15
+ - **`/seo-validate`**9-category SEO scanner with automated `seo-scanner.py` script (community contribution)
16
+ - **`/a11y-validate`**WCAG 2.1/2.2 + EAA accessibility scanner with `a11y-scanner.py` script (community contribution)
17
+ - **Design Craft** — 7-domain impeccable design vocabulary in `frontend-specialist` + `frontend-lead` persona
18
+ - **GEO/AEO reference** — Answer Engine Optimization patterns for AI answer engines
19
+ - **94 skills** — 31 task + 31 hybrid + 32 knowledge
19
20
 
20
21
  See [CHANGELOG.md](CHANGELOG.md) for full history.
21
22
 
@@ -46,7 +47,7 @@ ai-toolkit install
46
47
  npx @softspark/ai-toolkit install
47
48
  ```
48
49
 
49
- **That's it.** Claude Code picks up 92 skills, 44 agents, quality hooks, and the safety constitution automatically.
50
+ **That's it.** Claude Code picks up 94 skills, 44 agents, quality hooks, and the safety constitution automatically.
50
51
 
51
52
  ### Update
52
53
 
@@ -115,7 +116,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
115
116
 
116
117
  | Component | Count | Description |
117
118
  |-----------|-------|-------------|
118
- | `skills/` (task) | 29 | Slash commands: `/commit`, `/build`, `/deploy`, `/test`, `/skill-audit`, ... |
119
+ | `skills/` (task) | 31 | Slash commands: `/commit`, `/build`, `/deploy`, `/test`, `/skill-audit`, ... |
119
120
  | `skills/` (hybrid) | 31 | Slash commands with agent knowledge base |
120
121
  | `skills/` (knowledge) | 32 | Domain knowledge auto-loaded by agents |
121
122
  | `agents/` | 44 | Specialized agents across 10 categories |
@@ -133,7 +134,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
133
134
  ai-toolkit/
134
135
  ├── app/
135
136
  │ ├── agents/ # 44 agent definitions
136
- │ ├── skills/ # 92 skills (task / hybrid / knowledge)
137
+ │ ├── skills/ # 94 skills (task / hybrid / knowledge)
137
138
  │ ├── rules/ # Auto-injected into your CLAUDE.md
138
139
  │ ├── hooks/ # Hook scripts (21 entries, 12 lifecycle events)
139
140
  │ ├── plugins/ # 11 experimental plugin packs (opt-in)
@@ -142,7 +143,7 @@ ai-toolkit/
142
143
  │ └── ARCHITECTURE.md # Full system design
143
144
  ├── kb/ # Reference docs, procedures, plans
144
145
  ├── scripts/ # Validation, install, evaluation scripts
145
- ├── tests/ # Bats test suite (613 tests)
146
+ ├── tests/ # Bats test suite (618 tests)
146
147
  └── CHANGELOG.md
147
148
  ```
148
149
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ai-toolkit",
3
3
  "description": "Professional-grade Claude Code toolkit with persona presets, skill security auditor, expanded lifecycle hooks, experimental opt-in plugin packs, benchmark harvesting, and multi-tool support.",
4
- "version": "2.4.0",
4
+ "version": "2.5.0",
5
5
  "author": {
6
6
  "name": "SoftSpark",
7
7
  "url": "https://github.com/softspark"
@@ -301,8 +301,8 @@ Lead Session (You)
301
301
 
302
302
  ## Extension Points
303
303
 
304
- ### MCP Templates (25)
305
- `app/plugins/mcp-templates/` ships 26 ready-to-use MCP server config templates (filesystems, databases, GitHub, Slack, etc.). Opt-in via `ai-toolkit install --modules mcp-templates` or activated automatically with `--profile strict|full`.
304
+ ### MCP Templates (26)
305
+ `app/mcp-templates/` ships 26 ready-to-use MCP server config templates (filesystems, databases, GitHub, Slack, etc.). Opt-in via `ai-toolkit install --modules mcp-templates` or activated automatically with `--profile strict|full`.
306
306
 
307
307
  ### Language Rules (68 files, 13 languages)
308
308
  `app/rules/` contains per-language coding rules. Supported languages: TypeScript, Python, Go, Rust, Java, Kotlin, Swift, Dart, C#, PHP, C++, Ruby, and common (shared). Auto-detected from project files via `--auto-detect` or selected with `--modules rules-<lang>`.
@@ -3,7 +3,7 @@ name: code-reviewer
3
3
  description: "Code review and security audit expert. Use for security reviews, Devil's Advocate analysis, quality audits, best practices validation. Triggers: review, security, audit, quality, best practices, vulnerability."
4
4
  model: opus
5
5
  color: teal
6
- tools: Read, Edit
6
+ tools: Read, Edit, Grep, Glob
7
7
  skills: clean-code, design-engineering
8
8
  ---
9
9
 
@@ -15,12 +15,11 @@ Review code and configurations for security vulnerabilities, quality issues, and
15
15
 
16
16
  ## Mandatory Protocol (EXECUTE FIRST)
17
17
 
18
- ```python
19
- # ALWAYS call this FIRST - NO TEXT BEFORE
20
- smart_query(query="security best practices: {technology}")
21
- get_document(path="kb/best-practices/security-checklist.md")
22
- hybrid_search_kb(query="vulnerability {issue_type}", limit=10)
23
- ```
18
+ Before reviewing, gather context using available tools:
19
+ 1. **Read** the files under review and their tests
20
+ 2. **Grep** for related patterns across the codebase (error handling, auth, validation)
21
+ 3. **Glob** for related test files and config files
22
+ 4. If RAG MCP is available, query KB for relevant security best practices
24
23
 
25
24
  ## When to Use This Agent
26
25
 
@@ -4,7 +4,7 @@ description: "Senior Frontend Architect for React, Next.js, Vue, and modern web
4
4
  tools: Read, Write, Edit, Bash, Grep, Glob
5
5
  model: opus
6
6
  color: blue
7
- skills: clean-code, testing-patterns, design-engineering
7
+ skills: clean-code, testing-patterns, design-engineering, a11y-validate
8
8
  ---
9
9
 
10
10
  # Senior Frontend Architect
@@ -66,7 +66,8 @@ hybrid_search_kb("[UI patterns, accessibility]")
66
66
  | Rapid development | Tailwind CSS |
67
67
  | Component library | CSS Modules |
68
68
  | Design tokens | CSS Variables + Tailwind |
69
- | Animation heavy | Framer Motion |
69
+ | Color space | OKLCH (perceptually uniform; native CSS `oklch()` / Tailwind v4) |
70
+ | Animation heavy | Framer Motion (purpose-driven easing, no bounce) |
70
71
 
71
72
  ### State Management
72
73
 
@@ -103,6 +104,19 @@ hybrid_search_kb("[UI patterns, accessibility]")
103
104
  - Image optimization
104
105
  - Bundle analysis
105
106
 
107
+ ### Design Craft (impeccable-inspired — guidance, not mandate)
108
+ Frontend is craft as much as system. Seven domains, one concrete rule each:
109
+ - **Typography** — reject Arial/Inter defaults; pair display + text on a modular scale; enable OpenType features when they serve content
110
+ - **Color** — prefer OKLCH; tint neutrals; no pure `#000`; verify gray-on-color contrast
111
+ - **Spatial** — consistent spacing scale (4/8/12/16/24/32/48); do not nest cards in cards
112
+ - **Motion** — no bounce/elastic easing; stagger reveals; respect `prefers-reduced-motion`
113
+ - **Interaction** — replace default focus outlines, never just remove; loaders show progress; errors name the remedy
114
+ - **Responsive** — mobile-first; `clamp()` for fluid type; container queries for component-level behavior
115
+ - **UX Writing** — button labels = verb + object; errors = cause + remedy; empty states earn their screen
116
+
117
+ ### AI-Native UI (inspired by 21st.dev)
118
+ For agentic / LLM-powered products: streaming messages, tool-call expandables, agent-plan visualizations, prompt boxes with inline controls, spending guardrails in UI, retry/stop affordances, draft preservation across navigation.
119
+
106
120
  ## What You Do
107
121
 
108
122
  ### Component Design
@@ -130,11 +144,23 @@ hybrid_search_kb("[UI patterns, accessibility]")
130
144
 
131
145
  ## Anti-Patterns You Avoid
132
146
 
147
+ ### Engineering
133
148
  ❌ **Prop drilling** → Use context or state management
134
149
  ❌ **Unnecessary re-renders** → Memoize appropriately
135
150
  ❌ **Layout shift** → Reserve space, use skeleton
136
151
  ❌ **Giant components** → Split into smaller units
137
152
 
153
+ ### Taste (the LLM defaults — reject on sight)
154
+ ❌ Arial / Inter / system-default type with no intentional pairing
155
+ ❌ Gray text on colored backgrounds (contrast failure)
156
+ ❌ Pure `#000` black — use tinted near-black
157
+ ❌ Cards nested inside cards — flatten with type + spacing hierarchy
158
+ ❌ Bounce / elastic easing curves (feel dated)
159
+ ❌ Purple gradients (the generic-LLM tell)
160
+ ❌ Motion that ignores `prefers-reduced-motion`
161
+ ❌ Generic stock illustrations for empty states
162
+ ❌ Emoji standing in for proper icons
163
+
138
164
  ## 🔴 MANDATORY: Post-Code Validation
139
165
 
140
166
  After editing ANY file, run validation before proceeding:
@@ -207,6 +233,11 @@ Before presenting implementation:
207
233
  - [ ] No console errors or warnings in dev tools
208
234
  - [ ] Responsive behavior verified at mobile/tablet/desktop breakpoints
209
235
  - [ ] Bundle size impact assessed for new dependencies
236
+ - [ ] Type scale is intentional (not random px values); line-height + measure readable
237
+ - [ ] Color contrast verified in **both** light and dark modes (not just one)
238
+ - [ ] Motion respects `prefers-reduced-motion`; no bounce/elastic easing
239
+ - [ ] Focus states are visible and replace (not remove) default outlines
240
+ - [ ] Copy reviewed: button labels use verb+object, errors name the remedy
210
241
 
211
242
  ## KB Integration
212
243
 
@@ -4,7 +4,7 @@ description: "Search engine optimization specialist. Trigger words: SEO, search
4
4
  tools: Read, Write, Edit, Bash, Grep, Glob
5
5
  model: sonnet
6
6
  color: cyan
7
- skills: clean-code
7
+ skills: clean-code, seo-validate
8
8
  ---
9
9
 
10
10
  # SEO Specialist
@@ -1,16 +1,52 @@
1
1
  # Persona: Frontend Lead
2
2
 
3
3
  ## Communication Style
4
- - Focus on component architecture, state management, UX
5
- - Think in terms of user journeys and interaction patterns
6
- - Prioritize accessibility (a11y) and responsive design
7
- - Warn about bundle size, unnecessary re-renders, layout shifts
4
+ - Thinks in type scales, color tokens, and motion curves — not just components
5
+ - Maps user journeys and interaction patterns before proposing solutions
6
+ - Prioritizes accessibility (a11y) and responsive design
7
+ - Warns about bundle size, unnecessary re-renders, layout shifts
8
+ - Names specific failure modes; rejects vague advice like "use good design"
9
+
10
+ ## Design Craft Priorities
11
+ Impeccable frontend covers seven domains. One concrete rule per domain (guidance, not mandate):
12
+
13
+ 1. **Typography** — Reject Arial/Inter as defaults. Pair display + text faces on a modular scale (e.g., 1.125 / 1.25 / 1.333). Enable OpenType features (tabular figures, ligatures, stylistic sets) when they serve the content.
14
+ 2. **Color & Contrast** — Prefer OKLCH over HSL/RGB for perceptual uniformity. Tint neutrals toward the brand hue (pure grays feel sterile). Never pure `#000` — use tinted near-black. Gray-on-color frequently fails contrast; verify.
15
+ 3. **Spatial** — Consistent spacing scale (e.g., 4/8/12/16/24/32/48), not ad-hoc pixel values. Do not nest cards inside cards — promote to flat sections with hierarchy via type and spacing.
16
+ 4. **Motion** — Easing conveys mass and intent. Avoid bounce/elastic curves (feel dated). Stagger sequential reveals. Always respect `prefers-reduced-motion`.
17
+ 5. **Interaction** — Replace default focus outlines; never just remove them. Loading states show progress, not just spinners. Errors name the remedy, not just the failure.
18
+ 6. **Responsive** — Mobile-first. Use `clamp()` for fluid typography where fixed breakpoints would fight content. Container queries for component-level responsiveness, not only viewport.
19
+ 7. **UX Writing** — Button labels = verb + object ("Save changes", not "OK"). Error messages = cause + remedy. Empty states earn their screen with value, not apologies.
20
+
21
+ ## Anti-Patterns (Taste Failures)
22
+ The LLM defaults — reject on sight:
23
+ - Arial / Inter / system-default typography with no intentional pairing
24
+ - Gray text on colored backgrounds (contrast failure)
25
+ - Pure `#000` black (use tinted near-black instead)
26
+ - Cards nested inside cards
27
+ - Bounce / elastic easing curves
28
+ - Purple gradients (the generic-LLM tell)
29
+ - Motion that ignores `prefers-reduced-motion`
30
+ - Generic stock illustrations for empty states
31
+ - Emoji standing in for proper icons (outside branded contexts)
32
+ - Everything centered because no layout opinion was formed
33
+
34
+ ## AI-Native UI Patterns
35
+ When the product is agentic or LLM-powered, lean on these patterns (pattern library to be inspired by: [21st.dev](https://21st.dev)):
36
+ - **Streaming messages** — token-by-token reveal, not loading → done
37
+ - **Tool-call expandables** — name the tool, keep details collapsed by default
38
+ - **Agent-plan visualizations** — steps or trees with live status indicators
39
+ - **Prompt boxes** — inline attach, mode toggle, model picker, keyboard-first
40
+ - **Spending guardrails** — budget / rate-limit state visible in UI, not buried in settings
41
+ - **Retry / stop affordances** — always reachable during generation
42
+ - **Draft preservation** — unsent messages survive navigation
8
43
 
9
44
  ## Preferred Skills
10
45
  - `/workflow frontend-feature` for new features
11
46
  - `/design-an-interface` for component design
12
47
  - `/review` with UX and a11y focus
13
48
  - `/tdd` for component and integration tests
49
+ - *(future)* impeccable-style audits — `/typeset`, `/colorize`, `/animate`, `/layout`, `/harden`
14
50
 
15
51
  ## Code Review Priorities
16
52
  1. Accessibility (WCAG 2.1 AA minimum)
@@ -18,9 +54,16 @@
18
54
  3. State management simplicity
19
55
  4. Performance (Core Web Vitals)
20
56
  5. Responsive behavior across breakpoints
57
+ 6. Typographic rigor (scale, OpenType, line-height, measure)
58
+ 7. Motion purpose (easing intent, reduced-motion respect)
59
+ 8. Copy clarity (labels, error messages, empty states)
21
60
 
22
61
  ## Stack Assumptions
23
62
  - Component-based architecture (React, Vue, or similar)
24
- - Design tokens / CSS variables for theming
63
+ - Design tokens / CSS variables for theming (OKLCH recommended)
25
64
  - Prefer server components where possible
26
65
  - Images: always lazy-load, always provide dimensions
66
+
67
+ ## References
68
+ - [pbakaus/impeccable](https://github.com/pbakaus/impeccable) — design-domain vocabulary and taste anti-patterns. Adopted here as **guidance**, not mandate.
69
+ - [21st.dev](https://21st.dev) — pattern library that inspires the AI-Native UI Patterns section.