@softspark/ai-toolkit 2.4.1 → 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.
- package/AGENTS.md +32 -19
- package/CHANGELOG.md +23 -0
- package/README.md +11 -11
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/agents/code-reviewer.md +6 -7
- package/app/agents/frontend-specialist.md +33 -2
- package/app/agents/seo-specialist.md +1 -1
- package/app/personas/frontend-lead.md +48 -5
- package/app/skills/a11y-validate/SKILL.md +377 -0
- package/app/skills/a11y-validate/reference/aria-patterns.md +259 -0
- package/app/skills/a11y-validate/reference/eaa-compliance.md +252 -0
- package/app/skills/a11y-validate/reference/mobile-eaa.md +329 -0
- package/app/skills/a11y-validate/reference/wcag-2-1-aa.md +285 -0
- package/app/skills/a11y-validate/reference/wcag-2-2-aa.md +221 -0
- package/app/skills/a11y-validate/scripts/a11y-scanner.py +639 -0
- package/app/skills/clean-code/reference/python.md +3 -3
- package/app/skills/design-engineering/SKILL.md +2 -5
- package/app/skills/review/SKILL.md +30 -6
- package/app/skills/seo-validate/SKILL.md +460 -0
- package/app/skills/seo-validate/reference/core-web-vitals.md +445 -0
- package/app/skills/seo-validate/reference/geo-aeo-patterns.md +259 -0
- package/app/skills/seo-validate/reference/geo-guidelines.md +248 -0
- package/app/skills/seo-validate/reference/schema-types.md +465 -0
- package/app/skills/seo-validate/reference/spa-ssg-patterns.md +351 -0
- package/app/skills/seo-validate/reference/w3c-guidelines.md +289 -0
- package/app/skills/seo-validate/scripts/seo-scanner.py +549 -0
- package/bin/ai-toolkit.js +4 -4
- package/kb/reference/architecture-overview.md +1 -1
- package/kb/reference/comparison.md +1 -1
- package/kb/reference/skills-catalog.md +3 -1
- package/llms-full.txt +10 -6
- package/manifest.json +3 -3
- package/package.json +2 -2
- package/scripts/config_cli.py +4 -10
- package/scripts/doctor.py +3 -3
- package/scripts/install_steps/ai_tools.py +1 -1
- package/scripts/plugin.py +1 -1
package/llms-full.txt
CHANGED
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
|
|
57
57
|
## Skills
|
|
58
58
|
|
|
59
|
+
- **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).
|
|
59
60
|
- **agent-creator**: Creates new specialized agents with frontmatter, tool selection, and delegation guidance
|
|
60
61
|
- **analyze**: Analyze code quality, complexity, and patterns
|
|
61
62
|
- **api-patterns**: Loaded when user asks about REST API design or GraphQL patterns
|
|
@@ -133,6 +134,7 @@
|
|
|
133
134
|
- **rust-patterns**: Loaded when user asks about Rust development patterns
|
|
134
135
|
- **search**: Search the knowledge base with semantic and hybrid modes
|
|
135
136
|
- **security-patterns**: Loaded when user asks about security, OWASP, or auth patterns
|
|
137
|
+
- **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.
|
|
136
138
|
- **skill-audit**: Scan skills and agents for security risks: dangerous patterns, secrets, excessive permissions
|
|
137
139
|
- **skill-creator**: Create new skills from templates with guided workflow
|
|
138
140
|
- **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.
|
|
@@ -4456,7 +4458,7 @@ service: ai-toolkit
|
|
|
4456
4458
|
tags: [architecture, overview, design, structure]
|
|
4457
4459
|
version: "1.4.4"
|
|
4458
4460
|
created: "2026-03-23"
|
|
4459
|
-
last_updated: "2026-04-
|
|
4461
|
+
last_updated: "2026-04-15"
|
|
4460
4462
|
description: "Architecture of ai-toolkit: directory layout, global install model, editor-aware MCP install, Codex translation layer, skill tiers, and integration with projects."
|
|
4461
4463
|
---
|
|
4462
4464
|
|
|
@@ -4636,7 +4638,7 @@ Three tiers determine how to approach a task:
|
|
|
4636
4638
|
|
|
4637
4639
|
| Type | Field | Invocation | Count |
|
|
4638
4640
|
|------|-------|-----------|-------|
|
|
4639
|
-
| Task | `disable-model-invocation: true` | User via `/skill` only |
|
|
4641
|
+
| Task | `disable-model-invocation: true` | User via `/skill` only | 30 |
|
|
4640
4642
|
| Hybrid | (neither) | User via `/skill` + agent knowledge | 31 |
|
|
4641
4643
|
| Knowledge | `user-invocable: false` | Claude auto-loads | 32 |
|
|
4642
4644
|
|
|
@@ -4786,7 +4788,7 @@ Severity levels: HIGH (blocks deployment), WARN (should fix), INFO (best practic
|
|
|
4786
4788
|
## Extension Points
|
|
4787
4789
|
|
|
4788
4790
|
### MCP Templates
|
|
4789
|
-
`app/
|
|
4791
|
+
`app/mcp-templates/` contains 26 ready-to-use MCP server config templates. Opt-in via `ai-toolkit install --modules mcp-templates` or activated automatically with `--profile strict|full`.
|
|
4790
4792
|
|
|
4791
4793
|
### Language Rules
|
|
4792
4794
|
`app/rules/` provides language-specific rule files covering 13 languages (TypeScript, Python, Go, Rust, Java, Kotlin, Swift, Dart, C#, PHP, C++, Ruby, common). Auto-detected from project files via `--auto-detect` or selectable with `--modules rules-<lang>`. See README.md for current count.
|
|
@@ -5137,7 +5139,7 @@ category: reference
|
|
|
5137
5139
|
service: ai-toolkit
|
|
5138
5140
|
tags: [cli, commands, reference, install, update, plugin, mcp]
|
|
5139
5141
|
created: "2026-04-13"
|
|
5140
|
-
last_updated: "2026-04-
|
|
5142
|
+
last_updated: "2026-04-15"
|
|
5141
5143
|
description: "Complete CLI reference for all ai-toolkit commands, options, and flags."
|
|
5142
5144
|
---
|
|
5143
5145
|
|
|
@@ -5430,7 +5432,7 @@ description: "Feature comparison of ai-toolkit vs other Claude Code toolkits and
|
|
|
5430
5432
|
|
|
5431
5433
|
| Feature | ai-toolkit | everything-claude-code | wshobson/agents | ruflo |
|
|
5432
5434
|
|---------|---------------|----------------------|-----------------|-------|
|
|
5433
|
-
| Skills |
|
|
5435
|
+
| Skills | 93 | 100+ | 146 | 20+ |
|
|
5434
5436
|
| Agents | 44 | 30+ | 112 | 20+ |
|
|
5435
5437
|
| Machine-enforced constitution | **Yes** | No (docs only) | No | No |
|
|
5436
5438
|
| Skill-scoped lifecycle hooks | **Yes** | No | No | No |
|
|
@@ -8553,7 +8555,7 @@ All functionality is unified under skills. Task and hybrid skills are user-invoc
|
|
|
8553
8555
|
| **2 — Multi-agent workflow** | `/workflow <type>` | Cross-cutting task with known pattern |
|
|
8554
8556
|
| **3 — Custom parallelism** | `/orchestrate`, `/swarm` | No predefined workflow matches |
|
|
8555
8557
|
|
|
8556
|
-
## Task Skills (
|
|
8558
|
+
## Task Skills (30)
|
|
8557
8559
|
|
|
8558
8560
|
Task skills execute a specific action. Invoked via slash commands. `disable-model-invocation: true`.
|
|
8559
8561
|
|
|
@@ -8588,6 +8590,8 @@ Task skills execute a specific action. Invoked via slash commands. `disable-mode
|
|
|
8588
8590
|
| **prd-to-issues** | `/prd-to-issues` | medium | Break PRD into GitHub issues with vertical slices and HITL/AFK tagging |
|
|
8589
8591
|
| **skill-audit** | `/skill-audit` | medium | Scan skills and agents for security risks: dangerous patterns, secrets, excessive permissions |
|
|
8590
8592
|
| **hipaa-validate** | `/hipaa-validate` | medium | Scan codebase for HIPAA compliance issues: PHI exposure, missing audit logging, unencrypted transmission/storage, access control gaps, temp file exposure, and missing BAA references |
|
|
8593
|
+
| **a11y-validate** | `/a11y-validate` | medium | Scan codebase for accessibility violations: WCAG 2.1 Level AA, EN 301 549, European Accessibility Act (EAA / EU 2019/882). Covers semantics, keyboard, focus, color contrast, forms, media, ARIA, motion, mobile (React Native + Flutter), and EAA accessibility-statement documentation. |
|
|
8594
|
+
| **seo-validate** | `/seo-validate` | medium | Scan codebase for SEO issues: 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. Framework-aware (Next/Nuxt/Astro/Gatsby/SvelteKit/Remix/Angular/Vue/static HTML). |
|
|
8591
8595
|
|
|
8592
8596
|
## Hybrid Skills (31)
|
|
8593
8597
|
|
package/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.
|
|
2
|
+
"version": "2.5.0",
|
|
3
3
|
"components": {
|
|
4
4
|
"agents": {
|
|
5
5
|
"description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"tags": ["core", "agents"]
|
|
10
10
|
},
|
|
11
11
|
"skills": {
|
|
12
|
-
"description": "
|
|
12
|
+
"description": "94 skills (31 task + 31 hybrid + 32 knowledge)",
|
|
13
13
|
"path": "app/skills",
|
|
14
14
|
"target": ".claude/skills",
|
|
15
15
|
"type": "symlink",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"default": true
|
|
91
91
|
},
|
|
92
92
|
"skills": {
|
|
93
|
-
"description": "
|
|
93
|
+
"description": "94 skills (task, hybrid, knowledge)",
|
|
94
94
|
"default": true
|
|
95
95
|
},
|
|
96
96
|
"rules-common": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softspark/ai-toolkit",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Professional-grade AI coding toolkit:
|
|
3
|
+
"version": "2.5.0",
|
|
4
|
+
"description": "Professional-grade AI coding toolkit: 94 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity, Codex CLI), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
7
7
|
"claude-code",
|
package/scripts/config_cli.py
CHANGED
|
@@ -96,17 +96,11 @@ def cmd_validate(args: list[str]) -> int:
|
|
|
96
96
|
print(f" ✗ Merge failed: {e}")
|
|
97
97
|
return 1
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
("constitution articles intact", True),
|
|
103
|
-
]
|
|
104
|
-
|
|
99
|
+
# Summary — these passed because validation above would have returned 1
|
|
100
|
+
print(f" ✓ schema valid")
|
|
101
|
+
print(f" ✓ no forbidden overrides")
|
|
105
102
|
if extends:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
for label, ok in checks:
|
|
109
|
-
print(f" {'✓' if ok else '✗'} {label}")
|
|
103
|
+
print(f" ✓ extends resolved")
|
|
110
104
|
|
|
111
105
|
print("\n Config valid ✓")
|
|
112
106
|
return 0
|
package/scripts/doctor.py
CHANGED
|
@@ -454,13 +454,13 @@ def check_stale_rules(dr: DiagResult, fix_mode: bool) -> None:
|
|
|
454
454
|
for rule_file in sorted(RULES_DIR.iterdir()):
|
|
455
455
|
# Check for stale symlinks
|
|
456
456
|
if rule_file.is_symlink() and not rule_file.exists():
|
|
457
|
-
|
|
457
|
+
dr.warn(f"Stale symlink: {rule_file}")
|
|
458
458
|
stale += 1
|
|
459
459
|
if fix_mode:
|
|
460
460
|
rule_file.unlink()
|
|
461
|
-
|
|
461
|
+
dr.fixed(f"removed stale symlink: {rule_file.name}")
|
|
462
462
|
elif rule_file.is_file() and rule_file.stat().st_size == 0:
|
|
463
|
-
|
|
463
|
+
dr.warn(f"Empty rule file: {rule_file}")
|
|
464
464
|
stale += 1
|
|
465
465
|
|
|
466
466
|
if stale == 0:
|
|
@@ -194,7 +194,7 @@ def run_script(script_name: str, *args: str, capture: bool = False) -> str:
|
|
|
194
194
|
# All known editor identifiers for --editors flag
|
|
195
195
|
ALL_EDITORS = [
|
|
196
196
|
"copilot", "cursor", "windsurf", "cline", "roo",
|
|
197
|
-
"aider", "augment", "antigravity", "codex",
|
|
197
|
+
"aider", "augment", "antigravity", "codex", "gemini",
|
|
198
198
|
]
|
|
199
199
|
|
|
200
200
|
# Map of project files/dirs → editor names for auto-detection
|
package/scripts/plugin.py
CHANGED
|
@@ -912,7 +912,7 @@ def cmd_status(editors: list[str]) -> None:
|
|
|
912
912
|
print(f" Hooks: {', '.join(h.name for h in hooks)}")
|
|
913
913
|
elif editor == "codex":
|
|
914
914
|
rules_dir = CODEX_ROOT / ".agents" / "rules"
|
|
915
|
-
rule_files = sorted(rules_dir.glob(f"
|
|
915
|
+
rule_files = sorted(rules_dir.glob(f"plugin-{name}-*.md")) if rules_dir.is_dir() else []
|
|
916
916
|
if rule_files:
|
|
917
917
|
print(f" Rules: {', '.join(f.name for f in rule_files)}")
|
|
918
918
|
if name == "memory-pack":
|