feat: restore /close-issue slash command ergonomics via symlink to provider-agnostic procedure - #1344
Conversation
- Create symlink .claude/commands/close-issue.md → knowledge/procedures/close-issue-procedure.md - Enables Claude Code slash command autocomplete and ergonomics - Maintains provider-agnostic knowledge base as single source of truth - No duplication: symlink ensures consistency across all AI providers This "tracer bullet" approach meets halfway between pure natural language invocation and dedicated slash commands, leveraging Claude Code's UX while preserving AI provider agnosticism. Closes #1343
|
⏳ Code review in progress. Analyzing for code quality issues and best practices. Detailed findings will be posted upon completion. Using Amazon Q Developer for GitHubAmazon Q Developer1 is an AI-powered assistant that integrates directly into your GitHub workflow, enhancing your development process with intelligent features for code development, review, and transformation. Slash Commands
FeaturesAgentic Chat Code Review CustomizationYou can create project-specific rules for Amazon Q Developer to follow:
Example rule: FeedbackTo provide feedback on Amazon Q Developer, create an issue in the Amazon Q Developer public repository. For more detailed information, visit the Amazon Q for GitHub documentation. Footnotes
|
There was a problem hiding this comment.
Review Summary
This PR attempts to restore Claude Code slash command functionality through a symlink strategy, which is a clever architectural approach. However, there's a critical implementation issue that prevents the solution from working as intended.
Critical Issues
- Symlink Implementation Error: The current implementation creates a regular text file containing a path string instead of an actual symbolic link. This will not provide the intended functionality.
Minor Issues
- Missing trailing newline (POSIX compliance)
Recommendation
The concept and architecture described in the PR description is sound - using symlinks to bridge Claude Code's slash command ergonomics with provider-agnostic procedures. However, the implementation needs to be corrected to actually create a symbolic link rather than a text file.
To fix this, you'll need to:
- Delete the current text file
- Create an actual symlink using
git addwith the symlink properly created vialn -s - Ensure Git tracks it as a symlink (mode 120000)
The "tracer bullet" approach mentioned in the PR description is excellent, but this particular bullet missed its target due to the implementation detail. Once corrected, this should achieve the desired UX improvements while maintaining the architectural benefits.
| @@ -0,0 +1 @@ | |||
| ../../knowledge/procedures/close-issue-procedure.md No newline at end of file | |||
There was a problem hiding this comment.
🛑 Critical Implementation Error: This file contains a text path instead of creating an actual symlink. The current implementation creates a regular file with the content "../../knowledge/procedures/close-issue-procedure.md" rather than a symbolic link pointing to that file. This will not achieve the intended functionality described in the PR description. To create a proper symlink, you need to use Git's symlink functionality or create the symlink using ln -s ../../knowledge/procedures/close-issue-procedure.md .claude/commands/close-issue.md and then commit the resulting symlink.
| @@ -0,0 +1 @@ | |||
| ../../knowledge/procedures/close-issue-procedure.md No newline at end of file | |||
There was a problem hiding this comment.
The file is missing a trailing newline, which violates POSIX standards and may cause issues with some tools. Most text editors and Git workflows expect files to end with a newline character.
|
Thanks for the review! However, I can confirm this IS a proper symlink, not a text file. Evidence: $ git ls-files -s .claude/commands/close-issue.md
120000 4888dee40cf44252d3cc2615f3b2fd140f2bce05 0 .claude/commands/close-issue.md
$ ls -la .claude/commands/close-issue.md
lrwxrwxrwx ... .claude/commands/close-issue.md -> ../../knowledge/procedures/close-issue-procedure.md
$ file .claude/commands/close-issue.md
.claude/commands/close-issue.md: symbolic link to ../../knowledge/procedures/close-issue-procedure.mdExplanation:
The implementation is correct and will function as intended after merge and Claude Code restart. 🎯 |
Transforms dotfiles into a Claude Code plugin that can be installed in any repo. **The Problem**: PR #1344 added /close-issue via symlink in dotfiles, but other repos (like lifehacking) can't access it. The old command generation system was removed in #1320. **The Solution**: Use Claude Code's official plugin system to share commands: ``` .claude-plugin/ ├── plugin.json # Plugin metadata ├── marketplace.json # Distribution manifest └── commands/ # Symlinked to knowledge base ├── close-issue.md ├── create-issue.md ├── extract-best-frame.md └── retro.md ``` ## Installation in Other Repos **Local (for testing):** ```bash /plugin marketplace add ~/ppv/pillars/dotfiles /plugin install dotfiles-commands ``` **GitHub (after merge):** ```bash /plugin marketplace add atxtechbro/dotfiles /plugin install dotfiles-commands@atxtechbro ``` ## Benefits - ✅ Official Claude Code extension system (modern approach) - ✅ Commands shareable across all repos via plugin install - ✅ Single source of truth (knowledge base remains authoritative) - ✅ Expandable with agents, hooks, MCP servers later - ✅ Per-repo control (install only where needed) Principles: systems-stewardship (single source of truth), dotfiles-as-plugin (shareable setup)
) Transforms dotfiles into a Claude Code plugin that can be installed in any repo. **The Problem**: PR #1344 added /close-issue via symlink in dotfiles, but other repos (like lifehacking) can't access it. The old command generation system was removed in #1320. **The Solution**: Use Claude Code's official plugin system to share commands: ``` .claude-plugin/ ├── plugin.json # Plugin metadata ├── marketplace.json # Distribution manifest └── commands/ # Symlinked to knowledge base ├── close-issue.md ├── create-issue.md ├── extract-best-frame.md └── retro.md ``` ## Installation in Other Repos **Local (for testing):** ```bash /plugin marketplace add ~/ppv/pillars/dotfiles /plugin install dotfiles-commands ``` **GitHub (after merge):** ```bash /plugin marketplace add atxtechbro/dotfiles /plugin install dotfiles-commands@atxtechbro ``` ## Benefits - ✅ Official Claude Code extension system (modern approach) - ✅ Commands shareable across all repos via plugin install - ✅ Single source of truth (knowledge base remains authoritative) - ✅ Expandable with agents, hooks, MCP servers later - ✅ Per-repo control (install only where needed) Principles: systems-stewardship (single source of truth), dotfiles-as-plugin (shareable setup)
Git Statistics
Summary
Restores
/close-issueslash command autocomplete and ergonomics in Claude Code while maintaining provider-agnostic knowledge base architecture.The Problem: Moving from
.claude/commands/toknowledge/procedures/achieved AI provider agnosticism but lost Claude Code's UX benefits:/close-issuepattern recognitionThe Solution: Symlink strategy that bridges both worlds:
What Changed
.claude/commands/directoryclose-issue-procedure.mdBenefits
🎯 Best of Both Worlds:
🔧 Technical:
Testing
After merge, restart Claude Code and verify:
/close-issueappears in autocompleteImplementation Notes
This "tracer bullet" approach meets halfway between:
We leverage platform-specific features (Claude Code slash commands) without sacrificing portability (knowledge base procedures work everywhere).
Closes #1343