feat(aictx): per-CLI enable/disable + hooks resource type#2
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
run_after_sync-aictx.sh) now only syncs the~/.aictxcache — no symlinks. All symlink management moves to theaictxCLI.enable/disablesubcommands:aictx enable <name> [--cli claude,qwen,...] [--type skill|agent|command|hook]creates symlinks for specific CLIs.disableremoves them. Cache stays untouched.ResourceKind::Hook/ResourceType::Hookwith hooks tab in TUI, indexing of.shfiles, and symlink support for Claude (configurable for other CLIs viadefaults.yaml).a(apply).tkeybinding for quick CLI tab switching.Test plan
cargo check— 0 errorscargo test --bins— 29/29 passchezmoi applypopulates cache only, no symlinks createdaictx enable <skill> --cli claudecreates symlink,aictx disableremoves itaictx enable <hook> --cli claudelinks hook script🤖 Generated with Claude Code