@softspark/ai-toolkit 1.6.0 → 1.6.1

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/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v1.6.1 — IDE Rule Format Compliance Audit (2026-04-10)
11
+
12
+ ### Fixed
13
+ - **Cline rules path** — changed `.cline/rules/` to `.clinerules/` directory per official Cline 3.7+ docs. Old path was silently ignored by Cline
14
+ - **Augment frontmatter type** — changed `auto_attached` to `agent_requested` per official Augment docs
15
+ - **Aider config** — added `CONVENTIONS.md` to `read:` list in `.aider.conf.yml` so Aider auto-loads the conventions we generate
16
+
17
+ ### Changed
18
+ - **`add-rule` help text** — now lists all supported editors (was missing Augment, Roo, Aider, Antigravity)
19
+ - Legacy `.clinerules` single-file is auto-migrated to `.clinerules/` directory on next install
20
+
21
+ ---
22
+
10
23
  ## v1.6.0 — IDE Language Rules Propagation, Planning Docs, Cloud Security Pack (2026-04-10)
11
24
 
12
25
  ### Added
package/README.md CHANGED
@@ -121,7 +121,7 @@ Replaces all symlinks with real files, inlines rules into CLAUDE.md, copies cons
121
121
  | Windsurf | `~/.codeium/.../global_rules.md` + `.windsurf/rules/*.md` | `ai-toolkit install` / `--local` | global + project |
122
122
  | Gemini CLI | `~/.gemini/GEMINI.md` | `ai-toolkit install` | global |
123
123
  | GitHub Copilot | `.github/copilot-instructions.md` | `ai-toolkit install --local` | project |
124
- | Cline | `.clinerules` + `.cline/rules/*.md` | `ai-toolkit install --local` | project |
124
+ | Cline | `.clinerules/*.md` | `ai-toolkit install --local` | project |
125
125
  | Roo Code | `.roomodes` + `.roo/rules/*.md` | `ai-toolkit install --local` | project |
126
126
  | Aider | `.aider.conf.yml` + `CONVENTIONS.md` | `ai-toolkit install --local` | project |
127
127
  | Augment | `.augment/rules/ai-toolkit-*.md` | `ai-toolkit install --local` | project |
@@ -535,9 +535,9 @@ When `--editors` is used alongside detected or explicit languages, language rule
535
535
  |--------|-------------------|------------|
536
536
  | Cursor | `.cursor/rules/ai-toolkit-lang-<lang>.mdc` | `globs` per file type (e.g. `**/*.py`) |
537
537
  | Windsurf | `.windsurf/rules/ai-toolkit-lang-<lang>.md` | always loaded |
538
- | Cline | `.cline/rules/ai-toolkit-lang-<lang>.md` | always loaded |
538
+ | Cline | `.clinerules/ai-toolkit-lang-<lang>.md` | always loaded |
539
539
  | Roo Code | `.roo/rules/ai-toolkit-lang-<lang>.md` | always loaded |
540
- | Augment | `.augment/rules/ai-toolkit-lang-<lang>.md` | `auto_attached` with globs |
540
+ | Augment | `.augment/rules/ai-toolkit-lang-<lang>.md` | `agent_requested` with globs |
541
541
  | Antigravity | `.agent/rules/ai-toolkit-lang-<lang>.md` | always loaded |
542
542
 
543
543
  Registered rules (`ai-toolkit add-rule`) are also propagated to directory-based editor configs as `ai-toolkit-custom-<name>` files.
@@ -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": "1.6.0",
4
+ "version": "1.6.1",
5
5
  "author": {
6
6
  "name": "SoftSpark",
7
7
  "url": "https://github.com/softspark"
package/bin/ai-toolkit.js CHANGED
@@ -83,7 +83,7 @@ const COMMANDS = {
83
83
  'copilot-instructions': 'Generate .github/copilot-instructions.md',
84
84
  'gemini-md': 'Generate GEMINI.md for Gemini CLI',
85
85
  'cline-rules': 'Generate .clinerules for Cline (legacy)',
86
- 'cline-dir-rules': 'Generate .cline/rules/*.md for Cline (recommended)',
86
+ 'cline-dir-rules': 'Generate .clinerules/*.md for Cline (recommended)',
87
87
  'roo-modes': 'Generate .roomodes for Roo Code',
88
88
  'roo-dir-rules': 'Generate .roo/rules/*.md shared rules for Roo Code',
89
89
  'aider-conf': 'Generate .aider.conf.yml for Aider',
@@ -108,7 +108,7 @@ Machine (global) Project (local)
108
108
  - `--editors cursor,aider` — install only selected editors
109
109
  - (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
110
110
 
111
- Each editor gets both legacy single-file format (for backwards compat) and new directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.cline/rules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Hooks are global-only — not merged into project settings.
111
+ Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Hooks are global-only — not merged into project settings.
112
112
 
113
113
  ## CLI Commands
114
114
 
@@ -132,7 +132,7 @@ Each editor gets both legacy single-file format (for backwards compat) and new d
132
132
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
133
133
  | `gemini-md` | `./` | Generates `GEMINI.md` |
134
134
  | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
135
- | `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` |
135
+ | `cline-dir-rules` | `./` | Generates `.clinerules/*.md` |
136
136
  | `roo-modes` | `./` | Generates `.roomodes` |
137
137
  | `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
138
138
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
package/llms-full.txt CHANGED
@@ -5264,7 +5264,7 @@ Machine (global) Project (local)
5264
5264
  - `--editors cursor,aider` — install only selected editors
5265
5265
  - (no flag) — auto-detect from existing project files; `update --local` picks up whatever editors already have configs
5266
5266
 
5267
- Each editor gets both legacy single-file format (for backwards compat) and new directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.cline/rules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Hooks are global-only — not merged into project settings.
5267
+ Each editor gets directory-based format (`.cursor/rules/*.mdc`, `.windsurf/rules/*.md`, `.clinerules/*.md`, `.roo/rules/*.md`, `.augment/rules/ai-toolkit-*.md`, `.agent/rules/*.md`, `CONVENTIONS.md`). Hooks are global-only — not merged into project settings.
5268
5268
 
5269
5269
  ## CLI Commands
5270
5270
 
@@ -5288,7 +5288,7 @@ Each editor gets both legacy single-file format (for backwards compat) and new d
5288
5288
  | `copilot-instructions` | `./` | Generates `.github/copilot-instructions.md` |
5289
5289
  | `gemini-md` | `./` | Generates `GEMINI.md` |
5290
5290
  | `cline-rules` | `./` | Generates `.clinerules` (legacy) |
5291
- | `cline-dir-rules` | `./` | Generates `.cline/rules/*.md` |
5291
+ | `cline-dir-rules` | `./` | Generates `.clinerules/*.md` |
5292
5292
  | `roo-modes` | `./` | Generates `.roomodes` |
5293
5293
  | `roo-dir-rules` | `./` | Generates `.roo/rules/*.md` |
5294
5294
  | `aider-conf` | `./` | Generates `.aider.conf.yml` |
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.6.0",
2
+ "version": "1.6.1",
3
3
  "components": {
4
4
  "agents": {
5
5
  "description": "44 specialized agents (orchestrator, backend, frontend, security, devops, etc.)",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softspark/ai-toolkit",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "description": "Professional-grade AI coding toolkit: 92 skills, 44 agents, multi-platform support (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Google Antigravity), machine-enforced safety constitution, persona presets, skill security auditor, expanded lifecycle hooks, 11 plugin packs, and benchmark tooling.",
5
5
  "keywords": [
6
6
  "claude",
@@ -2,8 +2,9 @@
2
2
  """add-rule -- Register a rule file in ~/.ai-toolkit/rules/.
3
3
 
4
4
  Registered rules are automatically injected into all AI tool configs
5
- (Claude, Cursor, Windsurf, Gemini) on next 'ai-toolkit install',
6
- and into project-local configs (Copilot, Cline) on 'ai-toolkit install --local'.
5
+ on next 'ai-toolkit install' or 'ai-toolkit update':
6
+ Global: Claude, Cursor, Windsurf, Gemini, Augment
7
+ Local (--local): all of the above + Copilot, Cline, Roo, Aider, Antigravity
7
8
 
8
9
  Usage:
9
10
  add_rule.py <rule-file> [rule-name]
@@ -47,8 +48,8 @@ def main() -> None:
47
48
  print(f"Registered: '{rule_name}' -> {dest}")
48
49
  print()
49
50
  print("Apply now:")
50
- print(" ai-toolkit update # global (Claude, Cursor, Windsurf, Gemini)")
51
- print(" ai-toolkit update --local # project-local (Copilot, Cline)")
51
+ print(" ai-toolkit update # global (Claude, Cursor, Windsurf, Gemini, Augment)")
52
+ print(" ai-toolkit update --local # project-local (all editors)")
52
53
 
53
54
 
54
55
  if __name__ == "__main__":
@@ -18,8 +18,9 @@ def main() -> None:
18
18
  print("# Use the architect mode for complex tasks, aligned with our 2-phase workflow")
19
19
  print("architect: true")
20
20
  print()
21
- print("# Read global rules ")
21
+ print("# Read project rules (loaded as read-only context)")
22
22
  print("read:")
23
+ print(' - "CONVENTIONS.md"')
23
24
  print(' - ".claude/CLAUDE.md"')
24
25
  print(' - ".claude/constitution.md"')
25
26
  print(' - "AGENTS.md"')
@@ -3,7 +3,7 @@
3
3
 
4
4
  Augment supports per-file rules with frontmatter:
5
5
  - type: always_apply — always in context
6
- - type: auto_attached + globs — attached for matching files
6
+ - type: agent_requested + globs — attached for matching files
7
7
 
8
8
  The existing generate_augment.py creates a single always_apply file.
9
9
  This generator adds granular per-category rules with appropriate types.
@@ -72,7 +72,7 @@ def _make_rules() -> dict[str, callable]:
72
72
  f"{PREFIX}code-style.md": lambda: _augment_wrap(
73
73
  rule_code_style(),
74
74
  description="Code style conventions",
75
- rule_type="auto_attached",
75
+ rule_type="agent_requested",
76
76
  globs=["*.py", "*.ts", "*.tsx", "*.js", "*.jsx", "*.go", "*.rs",
77
77
  "*.java", "*.kt", "*.swift", "*.dart", "*.cs", "*.php",
78
78
  "*.cpp", "*.cc", "*.rb"],
@@ -80,7 +80,7 @@ def _make_rules() -> dict[str, callable]:
80
80
  f"{PREFIX}testing.md": lambda: _augment_wrap(
81
81
  rule_testing(),
82
82
  description="Testing standards and patterns",
83
- rule_type="auto_attached",
83
+ rule_type="agent_requested",
84
84
  globs=["*.test.*", "*.spec.*", "test_*", "**/tests/**",
85
85
  "**/test/**", "**/__tests__/**"],
86
86
  ),
@@ -107,7 +107,7 @@ def generate(target_dir: Path, *,
107
107
  all_rules[filename] = (lambda fn, l, g: lambda: _augment_wrap(
108
108
  fn(),
109
109
  description=f"{l.title()} language rules",
110
- rule_type="auto_attached",
110
+ rule_type="agent_requested",
111
111
  globs=g,
112
112
  ))(content_fn, lang, globs)
113
113
  else:
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python3
2
- """Generate .cline/rules/*.md files for Cline.
2
+ """Generate .clinerules/*.md files for Cline.
3
3
 
4
- Cline reads directory-based rules from .cline/rules/*.md (since Q1 2025).
5
- The legacy .clinerules single-file format is still generated separately
6
- by generate_cline.py for backwards compatibility.
4
+ Cline reads rules from the .clinerules/ directory (since Cline 3.7).
5
+ Each .md file inside .clinerules/ is automatically loaded.
6
+ The legacy .clinerules single-file format is replaced by this directory.
7
7
 
8
8
  Usage:
9
9
  python3 scripts/generate_cline_rules.py [target-dir]
@@ -25,11 +25,16 @@ from dir_rules_shared import (
25
25
  def generate(target_dir: Path, *,
26
26
  language_modules: list[str] | None = None,
27
27
  rules_dir: Path | None = None) -> None:
28
- """Write .cline/rules/*.md files to target_dir."""
28
+ """Write .clinerules/*.md files to target_dir."""
29
+ # Migrate: if .clinerules exists as a single file, remove it
30
+ # so the directory can be created (Cline 3.7+ uses directory format)
31
+ clinerules = target_dir / ".clinerules"
32
+ if clinerules.is_file():
33
+ clinerules.unlink()
29
34
  rules = dict(STANDARD_RULES)
30
35
  rules.update(build_language_rules(language_modules))
31
36
  rules.update(build_registered_rules(rules_dir))
32
- write_rules(target_dir, rules, ".cline/rules")
37
+ write_rules(target_dir, rules, ".clinerules")
33
38
 
34
39
 
35
40
  def main() -> None:
@@ -136,7 +136,6 @@ _EDITOR_MARKERS: dict[str, str] = {
136
136
  ".windsurfrules": "windsurf",
137
137
  ".windsurf/rules": "windsurf",
138
138
  ".clinerules": "cline",
139
- ".cline/rules": "cline",
140
139
  ".roomodes": "roo",
141
140
  ".roo/rules": "roo",
142
141
  ".aider.conf.yml": "aider",
@@ -309,7 +308,7 @@ def _install_local_dry_run(reset: bool, editors: list[str] | None = None) -> Non
309
308
  "copilot": " Would inject: .github/copilot-instructions.md",
310
309
  "cursor": " Would generate: .cursorrules + .cursor/rules/*.mdc",
311
310
  "windsurf": " Would generate: .windsurfrules + .windsurf/rules/*.md",
312
- "cline": " Would generate: .clinerules + .cline/rules/*.md",
311
+ "cline": " Would generate: .clinerules/*.md",
313
312
  "roo": " Would generate: .roomodes + .roo/rules/*.md",
314
313
  "aider": " Would generate: .aider.conf.yml + CONVENTIONS.md",
315
314
  "augment": " Would generate: .augment/rules/ai-toolkit-*.md",
@@ -429,11 +428,11 @@ def _create_local_ai_tool_configs(cwd: Path, rules_dir: Path,
429
428
  rules_dir=rules_dir)
430
429
 
431
430
  if "cline" in eds:
432
- inject_with_rules(
433
- "generate-cline.sh",
434
- cwd / ".clinerules",
435
- rules_dir,
436
- )
431
+ # Migrate: remove legacy .clinerules single file (replaced by directory)
432
+ legacy_clinerules = cwd / ".clinerules"
433
+ if legacy_clinerules.is_file():
434
+ legacy_clinerules.unlink()
435
+ print(" Migrated: .clinerules file → .clinerules/ directory")
437
436
  from generate_cline_rules import generate as gen_cline_rules
438
437
  gen_cline_rules(cwd, language_modules=language_modules,
439
438
  rules_dir=rules_dir)