-
Notifications
You must be signed in to change notification settings - Fork 11
feat: Add comprehensive Claude slash command support with new features #232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Add file referencing with @ syntax (@filepath, @$1) - Add bash execution with ! syntax (!`git status`) - Add argument handling ($ARGUMENTS, $1-$9) - Add namespacing documentation (subdirectories → dot notation) - Create /create-slash-command tool for generating new commands - Add 28 integration tests covering all slash command features - Update creating-claude-commands skill with complete documentation All tests passing. Implements Claude Code slash commands spec: https://code.claude.com/docs/en/slash-commands 🤖 Generated with [Claude Code](https://claude.com/claude-code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
|
CodeAnt AI is reviewing your PR. Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
🤖 My Senior Dev — Analysis Complete👤 For @khaliqgant📁 Expert in View your contributor analytics → 📊 7 files reviewed • 4 high risk • 5 need attention 🚨 High Risk:
🚀 Open Interactive Review →The full interface unlocks features not available in GitHub:
💬 Chat here: 📖 View all 12 personas & slash commandsYou can interact with me by mentioning In PR comments or on any line of code:
Slash commands:
AI Personas (mention to get their perspective):
For the best experience, view this PR on myseniordev.com — includes AI chat, file annotations, and interactive reviews. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2 issues found across 3 files
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name=".claude/skills/creating-claude-commands/SKILL.md">
<violation number="1" location=".claude/skills/creating-claude-commands/SKILL.md:520">
P2: Documentation example has inconsistent variable usage. The descriptive text mentions `$1($2): $ARGUMENTS` but the bash command uses `$1: $ARGUMENTS`, omitting `$2`. Additionally, using `$ARGUMENTS` will include `$1` again, creating duplicate content in the commit message (e.g., `feat: feat add user auth`). Consider using `$1: $2` to match the `argument-hint: <type> <message>`.</violation>
</file>
<file name=".claude/commands/create-slash-command.md">
<violation number="1" location=".claude/commands/create-slash-command.md:31">
P2: Malformed markdown backticks - this will render incorrectly. To show backticks inside inline code, use double backticks with spaces: ``` `` !`command` `` ```.</violation>
</file>
Reply to cubic to teach it or ask questions. Re-run a review with @cubic-dev-ai review this PR
|
|
||
| Create conventional commit: $1($2): $ARGUMENTS | ||
|
|
||
| !`git add -A && git commit -m "$1: $ARGUMENTS"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Documentation example has inconsistent variable usage. The descriptive text mentions $1($2): $ARGUMENTS but the bash command uses $1: $ARGUMENTS, omitting $2. Additionally, using $ARGUMENTS will include $1 again, creating duplicate content in the commit message (e.g., feat: feat add user auth). Consider using $1: $2 to match the argument-hint: <type> <message>.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .claude/skills/creating-claude-commands/SKILL.md, line 520:
<comment>Documentation example has inconsistent variable usage. The descriptive text mentions `$1($2): $ARGUMENTS` but the bash command uses `$1: $ARGUMENTS`, omitting `$2`. Additionally, using `$ARGUMENTS` will include `$1` again, creating duplicate content in the commit message (e.g., `feat: feat add user auth`). Consider using `$1: $2` to match the `argument-hint: <type> <message>`.</comment>
<file context>
@@ -411,6 +485,42 @@ Add emoji to H1 heading for quick recognition:
+
+Create conventional commit: $1($2): $ARGUMENTS
+
+!`git add -A && git commit -m "$1: $ARGUMENTS"`
+```
+**Invoke with:** `/git.quick-commit feat "add user auth"`
</file context>
| 3. **Features to Consider:** | ||
| - **Arguments:** Use `$ARGUMENTS`, `$1`, `$2`, etc. for user input | ||
| - **File References:** Use `@filepath` to reference files | ||
| - **Bash Execution:** Use `!`command`` for inline bash (requires `Bash` in allowed-tools) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Malformed markdown backticks - this will render incorrectly. To show backticks inside inline code, use double backticks with spaces: `` !`command` ``.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .claude/commands/create-slash-command.md, line 31:
<comment>Malformed markdown backticks - this will render incorrectly. To show backticks inside inline code, use double backticks with spaces: ``` `` !`command` `` ```.</comment>
<file context>
@@ -0,0 +1,155 @@
+3. **Features to Consider:**
+ - **Arguments:** Use `$ARGUMENTS`, `$1`, `$2`, etc. for user input
+ - **File References:** Use `@filepath` to reference files
+ - **Bash Execution:** Use `!`command`` for inline bash (requires `Bash` in allowed-tools)
+ - **Namespacing:** Use subdirectories for organization (`.claude/commands/category/name.md`)
+
</file context>
| import { validateMarkdown } from '../validation.js'; | ||
| import type { CanonicalPackage } from '../types/canonical.js'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion: The imports for validateMarkdown and the CanonicalPackage type are never used in this test file, which is dead code and can cause TypeScript/ESLint failures in configurations that disallow unused locals, as well as adding unnecessary noise for maintainers. [possible bug]
Severity Level: Critical 🚨
| import { validateMarkdown } from '../validation.js'; | |
| import type { CanonicalPackage } from '../types/canonical.js'; |
Why it matters? ⭐
Both imports appear at the top of the final file but are never referenced anywhere in the test. Removing them will eliminate dead code and avoid failures in projects with "no-unused-vars" / unused-imports ESLint rules or stricter TS compiler settings. This is a real, actionable cleanup that reduces noise and potential CI failures.
Prompt for AI Agent 🤖
This is a comment left during a code review.
**Path:** packages/converters/src/__tests__/claude-slash-command-integration.test.ts
**Line:** 9:10
**Comment:**
*Possible Bug: The imports for `validateMarkdown` and the `CanonicalPackage` type are never used in this test file, which is dead code and can cause TypeScript/ESLint failures in configurations that disallow unused locals, as well as adding unnecessary noise for maintainers.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.|
CodeAnt AI finished reviewing your PR. |
💡 Enhance Your PR ReviewsWe noticed that 3 feature(s) are not configured for this repository. Enabling these features can help improve your code quality and workflow: 🚦 Quality GatesStatus: Quality Gates are not enabled at the organization level 🎫 Jira Ticket ComplianceStatus: Jira credentials file not found. Please configure Jira integration in your settings ⚙️ Custom RulesStatus: No custom rules configured. Add rules via organization settings or .codeant/review.json in your repository Want to enable these features? Contact your organization admin or check our documentation for setup instructions. |
Compares slash command implementations across 7 AI coding assistants: - Claude Code (most features: @, !, $ARGUMENTS, namespacing) - Cursor (simplest: plain markdown, no frontmatter) - Factory Droid (best for scripts: markdown + executables) - OpenCode (template-driven with agent routing) - Zed (extension-based: Rust/WASM) - Gemini CLI (standalone TOML: simple but static) - Codex (AGENTS.md sections) Includes feature comparison table and practical recommendations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
|
CodeAnt AI is running Incremental review Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
11 issues found across 73 files (changes from recent commits).
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="packages/registry/migrations/068_add_snippet_subtype.sql">
<violation number="1" location="packages/registry/migrations/068_add_snippet_subtype.sql:8">
P1: Adding this CHECK constraint without `NOT VALID` can lock/scan the entire `packages` table during migration. Use `NOT VALID` + `VALIDATE CONSTRAINT` to reduce blocking in production.</violation>
</file>
<file name=".github/workflows/deploy.yml">
<violation number="1" location=".github/workflows/deploy.yml:509">
P1: Using `--size-only` for HTML files may miss content updates. If an HTML file changes content but stays the same size (e.g., date updates, version strings), it won't be uploaded. This defeats the purpose of scheduled rebuilds to update pages with latest data. Consider removing `--size-only` for HTML files or using `--exact-timestamps` instead.</violation>
<violation number="2" location=".github/workflows/deploy.yml:573">
P1: Logic bug: `head -15` truncates invalidation paths, conflicting with the >50 threshold logic. If 16-50 files change, only the first 15 will be invalidated, leaving others with stale cached content. Consider increasing to `head -50` to match the threshold or adjusting the threshold logic.</violation>
</file>
<file name=".claude/rules/types.md">
<violation number="1" location=".claude/rules/types.md:40">
P2: Documentation inconsistency: `windsurf` is used as a key in `FORMAT_SUBTYPES` but is not included in the `Format` type definition (`"cursor" | "claude" | "continue"`). This example would cause a TypeScript error and could mislead developers. Either add `"windsurf"` to the `Format` type in the first example, or remove the `windsurf` entry from this example.</violation>
</file>
<file name="packages/converters/src/__tests__/to-codex.test.ts">
<violation number="1" location="packages/converters/src/__tests__/to-codex.test.ts:669">
P2: Test assertion doesn't verify the claim in the test name. The test is titled 'should truncate description to 1024 chars' but only asserts that `...` appears somewhere in the content. Consider adding assertions to verify the actual truncated length, e.g., by checking the description doesn't contain more than ~1024 'A' characters or by extracting and measuring the description field.</violation>
</file>
<file name="packages/converters/docs/opencode.md">
<violation number="1" location="packages/converters/docs/opencode.md:5">
P2: Inconsistent user-level path for Skills. Agents and Slash Commands use `~/.config/opencode/` but Skills uses `~/.opencode/`. Should likely be `~/.config/opencode/skill/${name}/SKILL.md` for consistency.</violation>
</file>
<file name="packages/cli/src/core/lockfile.ts">
<violation number="1" location="packages/cli/src/core/lockfile.ts:63">
P3: The type `'append' | 'prepend' | string` is redundant and provides no type safety since all string literals are assignable to `string`. Consider removing `string` to enforce only valid values, or use a template literal type for the `section:` pattern.</violation>
<violation number="2" location="packages/cli/src/core/lockfile.ts:222">
P1: Location-aware lockfile keys are written for snippets, but integrity/version lookups elsewhere still use non-location keys. This can bypass integrity verification for snippet installs and break locked-version resolution (especially with `--frozen-lockfile`). Ensure all reads/writes for snippet packages consistently include the same `location` (or add fallback lookup logic for legacy/non-location keys).</violation>
</file>
<file name="packages/registry/src/routes/analytics.ts">
<violation number="1" location="packages/registry/src/routes/analytics.ts:15">
P2: Incomplete change: 'codex' was added to the format enum here and in the OpenAPI body schema, but the `/popular` endpoint's `type` query parameter enum at line 454 was not updated. This inconsistency means downloads can be tracked as 'codex' format, but users cannot filter popular packages by that format.</violation>
</file>
<file name="packages/registry/src/routes/search.ts">
<violation number="1" location="packages/registry/src/routes/search.ts:12">
P2: Adding 'codex' here creates inconsistency with the duplicate `FORMAT_ENUM` in `packages.ts` which doesn't include 'codex'. This causes inconsistent API validation behavior - search endpoints will accept 'codex' but package endpoints will reject it. Consider either updating both files, or better yet, import the shared `FORMATS` constant from `@pr-pm/types` as a single source of truth.</violation>
</file>
<file name="packages/cli/src/commands/install.ts">
<violation number="1" location="packages/cli/src/commands/install.ts:358">
P2: Inconsistent default target for snippets in 'already installed' check. The hardcoded default 'AGENTS.md' may not match the actual package's configured target from `pkg.snippet.target`, causing the duplicate-installation check to fail for packages with custom targets.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
| ALTER TABLE packages DROP CONSTRAINT IF EXISTS packages_subtype_check; | ||
|
|
||
| -- Recreate with snippet included | ||
| ALTER TABLE packages ADD CONSTRAINT packages_subtype_check |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: Adding this CHECK constraint without NOT VALID can lock/scan the entire packages table during migration. Use NOT VALID + VALIDATE CONSTRAINT to reduce blocking in production.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/registry/migrations/068_add_snippet_subtype.sql, line 8:
<comment>Adding this CHECK constraint without `NOT VALID` can lock/scan the entire `packages` table during migration. Use `NOT VALID` + `VALIDATE CONSTRAINT` to reduce blocking in production.</comment>
<file context>
@@ -0,0 +1,9 @@
+ALTER TABLE packages DROP CONSTRAINT IF EXISTS packages_subtype_check;
+
+-- Recreate with snippet included
+ALTER TABLE packages ADD CONSTRAINT packages_subtype_check
+ CHECK (subtype IN ('rule', 'agent', 'skill', 'slash-command', 'prompt', 'workflow', 'tool', 'template', 'collection', 'chatmode', 'hook', 'snippet'));
</file context>
| --exclude "*.html" \ | ||
| --exclude "_next/data/*" | ||
| --exclude "_next/data/*" \ | ||
| --size-only 2>&1) || true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: Using --size-only for HTML files may miss content updates. If an HTML file changes content but stays the same size (e.g., date updates, version strings), it won't be uploaded. This defeats the purpose of scheduled rebuilds to update pages with latest data. Consider removing --size-only for HTML files or using --exact-timestamps instead.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/deploy.yml, line 509:
<comment>Using `--size-only` for HTML files may miss content updates. If an HTML file changes content but stays the same size (e.g., date updates, version strings), it won't be uploaded. This defeats the purpose of scheduled rebuilds to update pages with latest data. Consider removing `--size-only` for HTML files or using `--exact-timestamps` instead.</comment>
<file context>
@@ -495,36 +495,90 @@ jobs:
--exclude "*.html" \
- --exclude "_next/data/*"
+ --exclude "_next/data/*" \
+ --size-only 2>&1) || true
+ echo "$SYNC_OUTPUT"
+
</file context>
| --size-only 2>&1) || true | |
| 2>&1) || true |
| fi | ||
| # Convert space-separated paths to JSON array format | ||
| PATHS_ARRAY=$(echo "$PATHS" | tr ' ' '\n' | grep -v '^$' | head -15 | jq -R . | jq -s .) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: Logic bug: head -15 truncates invalidation paths, conflicting with the >50 threshold logic. If 16-50 files change, only the first 15 will be invalidated, leaving others with stale cached content. Consider increasing to head -50 to match the threshold or adjusting the threshold logic.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/deploy.yml, line 573:
<comment>Logic bug: `head -15` truncates invalidation paths, conflicting with the >50 threshold logic. If 16-50 files change, only the first 15 will be invalidated, leaving others with stale cached content. Consider increasing to `head -50` to match the threshold or adjusting the threshold logic.</comment>
<file context>
@@ -495,36 +495,90 @@ jobs:
+ fi
+
+ # Convert space-separated paths to JSON array format
+ PATHS_ARRAY=$(echo "$PATHS" | tr ' ' '\n' | grep -v '^$' | head -15 | jq -R . | jq -s .)
+ PATH_COUNT=$(echo "$PATHS_ARRAY" | jq 'length')
+
</file context>
| PATHS_ARRAY=$(echo "$PATHS" | tr ' ' '\n' | grep -v '^$' | head -15 | jq -R . | jq -s .) | |
| PATHS_ARRAY=$(echo "$PATHS" | tr ' ' '\n' | grep -v '^$' | head -50 | jq -R . | jq -s .) |
| const result = toCodex(skillPkg); | ||
|
|
||
| // Description should be truncated | ||
| expect(result.content).toContain('...'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Test assertion doesn't verify the claim in the test name. The test is titled 'should truncate description to 1024 chars' but only asserts that ... appears somewhere in the content. Consider adding assertions to verify the actual truncated length, e.g., by checking the description doesn't contain more than ~1024 'A' characters or by extracting and measuring the description field.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/converters/src/__tests__/to-codex.test.ts, line 669:
<comment>Test assertion doesn't verify the claim in the test name. The test is titled 'should truncate description to 1024 chars' but only asserts that `...` appears somewhere in the content. Consider adding assertions to verify the actual truncated length, e.g., by checking the description doesn't contain more than ~1024 'A' characters or by extracting and measuring the description field.</comment>
<file context>
@@ -450,4 +450,253 @@ Old content for my-command
+ const result = toCodex(skillPkg);
+
+ // Description should be truncated
+ expect(result.content).toContain('...');
+ });
+
</file context>
| packageId: z.string(), | ||
| version: z.string().optional(), | ||
| format: z.enum(['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp']).optional(), | ||
| format: z.enum(['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'codex', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp']).optional(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Incomplete change: 'codex' was added to the format enum here and in the OpenAPI body schema, but the /popular endpoint's type query parameter enum at line 454 was not updated. This inconsistency means downloads can be tracked as 'codex' format, but users cannot filter popular packages by that format.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/registry/src/routes/analytics.ts, line 15:
<comment>Incomplete change: 'codex' was added to the format enum here and in the OpenAPI body schema, but the `/popular` endpoint's `type` query parameter enum at line 454 was not updated. This inconsistency means downloads can be tracked as 'codex' format, but users cannot filter popular packages by that format.</comment>
<file context>
@@ -12,7 +12,7 @@ import { telemetry } from '../telemetry/index.js';
packageId: z.string(),
version: z.string().optional(),
- format: z.enum(['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp']).optional(),
+ format: z.enum(['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'codex', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp']).optional(),
client: z.enum(['cli', 'web', 'api']).optional(),
});
</file context>
|
|
||
| // Reusable enum constants for schema validation | ||
| const FORMAT_ENUM = ['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp'] as const; | ||
| const FORMAT_ENUM = ['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'codex', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp'] as const; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Adding 'codex' here creates inconsistency with the duplicate FORMAT_ENUM in packages.ts which doesn't include 'codex'. This causes inconsistent API validation behavior - search endpoints will accept 'codex' but package endpoints will reject it. Consider either updating both files, or better yet, import the shared FORMATS constant from @pr-pm/types as a single source of truth.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/registry/src/routes/search.ts, line 12:
<comment>Adding 'codex' here creates inconsistency with the duplicate `FORMAT_ENUM` in `packages.ts` which doesn't include 'codex'. This causes inconsistent API validation behavior - search endpoints will accept 'codex' but package endpoints will reject it. Consider either updating both files, or better yet, import the shared `FORMATS` constant from `@pr-pm/types` as a single source of truth.</comment>
<file context>
@@ -9,7 +9,7 @@ import { Package, Format, Subtype } from '../types.js';
// Reusable enum constants for schema validation
-const FORMAT_ENUM = ['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp'] as const;
+const FORMAT_ENUM = ['cursor', 'claude', 'claude-plugin', 'continue', 'windsurf', 'copilot', 'kiro', 'agents.md', 'gemini', 'ruler', 'droid', 'opencode', 'codex', 'trae', 'aider', 'zencoder', 'replit', 'generic', 'mcp'] as const;
const SUBTYPE_ENUM = ['rule', 'agent', 'skill', 'slash-command', 'prompt', 'workflow', 'tool', 'template', 'collection', 'chatmode', 'hook', 'plugin', 'extension', 'server'] as const;
</file context>
|
CodeAnt AI is running Incremental review Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
User description
Summary
Implements comprehensive support for Claude Code slash commands with all new features from the official documentation.
New Features
1. File Referencing with
@@filepath@$1,@$2Compare @src/old.js with @src/new.js2. Bash Execution with
!!`command`Bashinallowed-toolsCurrent status: !`git status`3. Argument Handling
$ARGUMENTS- All arguments passed to command$1,$2,$3...$9- Individual positional argumentsargument-hintfrontmatter field for documentation4. Namespacing
.claude/commands/git/status.md→/git.statusChanges
Updated Documentation
.claude/skills/creating-claude-commands/SKILL.mdNew Tool
.claude/commands/create-slash-command.md/create-slash-command <name> [description]Comprehensive Testing
@syntax)!syntax)Test Coverage
Documentation Reference
Based on: https://code.claude.com/docs/en/slash-commands
🤖 Generated with Claude Code
CodeAnt-AI Description
Add Claude slash command support: file references, inline bash, argument placeholders, namespacing, generator, and integration tests
What Changed
...is recognized and preserved; Bash tool permissions (e.g., Bash(git *)) are extracted from frontmatterImpact
✅ Clearer slash command templates for authors✅ Shorter command authoring with generator and examples✅ Fewer round-trip conversion regressions in command content💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.