-
Notifications
You must be signed in to change notification settings - Fork 2
feat(skills): add skills infrastructure using Claude Code plugin system #253
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
base: next
Are you sure you want to change the base?
feat(skills): add skills infrastructure using Claude Code plugin system #253
Conversation
- Create packages/skills/agnostic with skills package structure - Add add-skill generator for creating new skills - Add init-plugin generator for Claude Code plugin creation - Update init generator to support skills installation - Update generate-index utility to support SkillName type - Add example codebase-exploration skill 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Changes: - Create packages/skills/agnostic with first example skill - Add add-skill Nx generator for creating new skills - Add init-plugin generator for Claude Code plugin structure - Update init generator to support skills installation - Update generate-index utility to support SkillName type - Add skills to prompt-utils context types - Update nx.json and tsconfig.base.json for skills package The skills infrastructure allows: 1. Creating model-invoked capabilities (skills) 2. Installing skills via the init generator 3. Building Claude Code plugins with skills, commands, and agents 4. Pick-and-choose installation of specific skills 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
👋 Hi! I'm Claude, an AI assistant here to help with code reviews and answer questions about your PR. You can tag me anytime with 💡 Tip: Ask me to explain code, suggest improvements, review specific changes, or help with AI Toolkit development patterns. This repository contains the AI Toolkit - standardized, one-shot setup for Claude Code AI workflows. When working on changes, make sure to follow the Nx monorepo patterns and update relevant CLAUDE.md files. |
🤖 Claude Code Review
Skills Infrastructure ReviewThis PR adds a comprehensive skills infrastructure to the AI Toolkit, introducing the concept of "model-invoked capabilities" that Claude autonomously decides when to use. The implementation follows established patterns from the existing commands and agents infrastructure. SummaryThe PR introduces:
Architecture AssessmentThe implementation correctly follows the existing patterns:
Issues Found1. Schema Violation -
|
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.
📋 Review verdict: COMMENT
👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.
This formal review submission is for the verdict only. 2 inline comment(s) are attached below.
| "createNewPackage": { | ||
| "type": "boolean", | ||
| "description": "Create a new package for this skill", | ||
| "default": false, |
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.
Per the repository's CLAUDE.md guidelines for Nx Generator Schema Configuration:
❌ DO NOT include a
defaultvalue if the field should be optional
Only properties withoutx-promptand without defaults will properly respectprompt-when
This createNewPackage field has both default: false and prompt-when, which can interfere with the conditional prompting logic in prompt-utils. The field should likely not have a default value since it's conditionally prompted.
| "default": false, | |
| "createNewPackage": { | |
| "type": "boolean", | |
| "description": "Create a new package for this skill", | |
| "prompt-message": "➕ Would you like to create a new package instead?", | |
| "prompt-type": "confirm", | |
| "prompt-when": "package === '__create_new__'" | |
| }, |
| const { spawn } = await import('child_process'); | ||
|
|
||
| // Create a custom task that runs after file generation | ||
| const runGenerateIndexTask = (tree: Tree) => { |
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.
The tree parameter here is unused - the inner function only accesses tree.root which is already available through closure. This parameter adds confusion since the outer tree is captured in the closure anyway.
Consider removing the parameter for clarity:
const runGenerateIndexTask = () => {
return () => {
// tree.root is already accessible via closure
Summary
This PR adds a new skills infrastructure to ai-toolkit that aligns with Claude Code's plugin system, making it:
skills/<skill-name>/SKILL.md)Key Changes
New Package:
@ai-toolkit/skills-agnosticpackages/skills/agnostic/directory with standard Nx structurecodebase-explorationskill demonstrating the patternnameanddescriptionin frontmatter (same as agents)New Generator:
add-skilladd-commandandadd-agentNew Generator:
init-plugin.claude-plugin/plugin.jsonmanifestUpdated:
initGeneratorcodebase-explorationskill~/.claude/skills/<skill-name>/SKILL.mdformatInfrastructure Updates
generate-indexutility to supportSkillNametypetsconfig.base.jsonandnx.jsonprompt-utilscontext with skills-related propertiesHow Skills Differ from Commands/Agents
/commandcommands/<name>.mdagents/<name>.mdskills/<name>/SKILL.mdTesting
Example Usage
Linear Issue
Closes: https://linear.app/uniswap/issue/DEV-157/update-ai-toolkit-skills-infrastructure-to-use-claude-code-plugin
Autonomous implementation using claude-opus-4-5-20251101
✨ Claude-Generated Content
Summary
Adds skills infrastructure to ai-toolkit that aligns with Claude Code's plugin system. Skills are model-invoked capabilities that Claude autonomously decides when to use based on task context, complementing user-invoked commands and delegated agents.
Changes
@ai-toolkit/skills-agnostic: Created skills package with standard Nx structure and examplecodebase-explorationskilladd-skillgenerator: Creates new skills with templates similar toadd-commandandadd-agent, supporting both existing packages and new package creationinit-plugingenerator: Creates Claude Code plugin structure with.claude-plugin/plugin.jsonmanifest and optional skills/commands/agents directoriesinitgenerator: Added skills installation support parallel to commands/agents with default and custom selection modesgenerate-indexutility: Added support forSkillNametype alongside existingAgentandCommandNametypestsconfig.base.jsonandnx.json, extendedprompt-utilscontext with skills-related propertiesTechnical Details
/commandcommands/<name>.mdagents/<name>.mdskills/<name>/SKILL.mdname,description,allowed-tools) making them consistent with the existing commands and agents structure.Notes
~/.claude/skills/<skill-name>/SKILL.mdformat for Claude Code plugin compatibilitycodebase-explorationskill is included by default in standard installations.claude-plugin/plugin.json