Skip to content

feat(aictx): per-CLI enable/disable + hooks resource type#2

Merged
jsoyer merged 7 commits intomainfrom
feat/aictx-per-cli-enable-disable
Apr 12, 2026
Merged

feat(aictx): per-CLI enable/disable + hooks resource type#2
jsoyer merged 7 commits intomainfrom
feat/aictx-per-cli-enable-disable

Conversation

@jsoyer
Copy link
Copy Markdown
Owner

@jsoyer jsoyer commented Apr 12, 2026

Summary

  • Separate concerns: chezmoi script (run_after_sync-aictx.sh) now only syncs the ~/.aictx cache — no symlinks. All symlink management moves to the aictx CLI.
  • New enable/disable subcommands: aictx enable <name> [--cli claude,qwen,...] [--type skill|agent|command|hook] creates symlinks for specific CLIs. disable removes them. Cache stays untouched.
  • Hooks as resource type: New ResourceKind::Hook / ResourceType::Hook with hooks tab in TUI, indexing of .sh files, and symlink support for Claude (configurable for other CLIs via defaults.yaml).
  • TUI cross-CLI apply: Changes on all CLI tabs now persist when pressing a (apply). t keybinding for quick CLI tab switching.

Test plan

  • cargo check — 0 errors
  • cargo test --bins — 29/29 pass
  • Manual: chezmoi apply populates cache only, no symlinks created
  • Manual: aictx enable <skill> --cli claude creates symlink, aictx disable removes it
  • Manual: aictx enable <hook> --cli claude links hook script
  • Manual: TUI toggle skills across CLI tabs → apply → both applied

🤖 Generated with Claude Code

jsoyer and others added 7 commits April 12, 2026 21:27
Separate concerns: chezmoi script now only syncs the ~/.aictx cache
(no symlinks), while the aictx CLI owns all symlink lifecycle via
new `enable`/`disable` subcommands with `--cli` and `--type` flags.

- Add `aictx enable/disable <name> [--cli claude,qwen,...] [--type skill|agent|command|hook]`
- Add hooks as a new resource type (ResourceKind::Hook, ResourceType::Hook)
- Add Hooks tab to TUI with cross-CLI apply (changes on all CLI tabs persist)
- Add `t` keybinding in TUI for quick CLI tab switching
- Refactor TUI to return per-CLI selections via HashMap<String, Recommendations>
- Add install/uninstall hint messages in plugin manager
- Remove symlink creation from chezmoi run_after_sync-aictx.sh (cache-only now)
- Add hooks_dir to PathsConfig, hooks to BaseConfig and CLI registry

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move all AI resources into a unified dot_aictx/ directory so chezmoi
deploys directly to ~/.aictx/ without double-copy via rsync.

- git mv dot_skills/* → dot_aictx/skills/ (648 skill dirs)
- git mv dot_agents/*.md → dot_aictx/agents/ (192 agent files)
- Copy dot_claude/commands/ and dot_claude/rules/ into dot_aictx/ (duplicated for defaults)
- Add .gitkeep for hooks/, plugins/, mcp/ empty dirs
- Simplify chezmoi script: remove all sync_tree calls, keep settings.json copy only
- Update CLAUDE.md: replace dot_skills/dot_agents refs with dot_aictx/
- Update config.rs: remove ~/.skills and ~/.agents fallback paths

Workflow: chezmoi owns the cache (dot_aictx/ → ~/.aictx/),
aictx owns the symlinks (aictx enable/disable/apply → ~/.claude/ etc.)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add language-specific rules (common/, rust/, python/) from the archive
to both dot_aictx/rules/ and dot_claude/rules/ as defaults.

- Rules subdirs: 15 files across common/, rust/, python/ (coding-style,
  patterns, hooks, security, testing per language)
- Commands: 18 archive commands (aside, build-fix, code-review, tdd, etc.)
  added to dot_aictx/commands/ for symlinking via aictx
- Statusline: archive Noxys v4 statusline saved to dot_aictx/ as alternative

The symlinker already handles rule subdirectories — aictx apply symlinks
rust/, python/, common/ dirs into ~/.claude/rules/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace dot_skills/* and dot_agents/* exclusion patterns with
dot_aictx/skills/* and dot_aictx/agents/* after the directory
consolidation. Fixes JSON validation failure on tsconfig-strict.json.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add @RTK.md reference to dot_claude/CLAUDE.md source
- Add dot_claude/RTK.md so chezmoi deploys the RTK docs
- Rename run_always_configure-rtk → run_once_ (only run on first apply)

This eliminates the "CLAUDE.md has changed" prompt on every chezmoi update.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The ~/.skills directory is now replaced by ~/.aictx/skills/ after the
dot_aictx consolidation. This tells chezmoi to remove the orphan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jsoyer jsoyer merged commit d9794e5 into main Apr 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant