Skip to content

Component Types

This page documents each component type that a package can contain: the manifest format, file format, and how the component is installed.

Practices (v2)

Practices are abstract declarations of coding standards. They are the primary component type in v2 packages and are processed by AI during extraction and installation.

v2 Manifest Entry

practices:
  - name: type-safety
    intent: Enforce strict type annotations
    principles:
      - All functions must have type hints
      - Use modern syntax (list[str] not List[str])
    enforcement_patterns:
      - Run mypy in strict mode
    examples:
      - "def process(items: list[str]) -> int: ..."
    tags: [python, types]
Field Required Description
name Yes Short identifier (e.g., type-safety)
intent Yes One-line description of what it enforces
principles Yes List of rules and guidelines
enforcement_patterns No How to enforce (CI, linting, etc.)
examples No Code examples demonstrating the practice
tags No Categorization tags

How Practices Are Installed

With AI enabled, practices are adapted to the target project's existing rules:

  • If no existing rule covers the same topic, a new file is created
  • If an existing rule overlaps, the AI merges the practice into it
  • Each IDE gets its own adapted version in the correct format

Without AI (--no-ai), the raw practice content is written as a markdown file to each tool's directory.


Instructions (v1)

Instructions are Markdown files that guide AI coding assistant behavior. They are the v1 equivalent of practices -- raw file content rather than abstract declarations.

Manifest Entry

components:
  instructions:
    - name: code-quality
      file: instructions/code-quality.md
      description: Code quality and review guidelines
      tags: [quality, review]
Field Required Description
name Yes Unique identifier within the package
file Yes Relative path to the .md file
description Yes What this instruction covers
tags No Searchable categorization tags

Installation Paths

IDE Installed To Extension
Claude Code .claude/rules/<name>.md .md
Cursor .cursor/rules/<name>.mdc .mdc
Windsurf .windsurf/rules/<name>.md .md
GitHub Copilot .github/instructions/<name>.instructions.md .instructions.md
Kiro .kiro/steering/<name>.md .md
Cline .clinerules/<name>.md .md
Roo Code .roo/rules/<name>.md .md
Codex CLI Section in AGENTS.md .md

MCP Servers

MCP (Model Context Protocol) server configurations define external tool integrations. Each MCP component is a JSON file that tells the IDE how to launch and connect to an MCP server.

v2 Manifest Entry

mcp_servers:
  - name: github
    description: GitHub API access
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    credentials:
      - name: GITHUB_TOKEN
        description: GitHub personal access token
        required: true

v1 Manifest Entry

components:
  mcp_servers:
    - name: filesystem
      file: mcp/filesystem.json
      description: Local filesystem access via MCP
      credentials:
        - name: ALLOWED_DIRECTORIES
          description: Directories to expose
          required: false
          default: "."

Credential Descriptors

Each credential entry describes an environment variable:

Field Required Description
name Yes Env var name (UPPER_SNAKE_CASE)
description Yes What this credential is for
required No Whether user must provide it (default: true)
default No Default value (only valid when required=false)

Validation

A credential cannot be both required: true and have a default value.

Supported IDEs

Claude Code, Cursor, Windsurf, Roo Code, GitHub Copilot, and others. See IDE Compatibility.


Hooks

Hooks are shell scripts triggered by IDE lifecycle events. Currently, only Claude Code supports hooks.

Manifest Entry

components:
  hooks:
    - name: pre-commit
      file: hooks/pre-commit.sh
      description: Run linting before commits
      hook_type: pre-commit
Field Required Description
name Yes Hook identifier
file Yes Relative path to shell script
description Yes What the hook does
hook_type Yes Trigger type (e.g., PreToolUse, PostToolUse)

Installation Path

IDE Installed To
Claude Code .claude/hooks/<name>.sh

Commands

Commands are shell scripts or slash commands that users invoke on demand.

Manifest Entry

components:
  commands:
    - name: test
      file: commands/test.sh
      description: Run test suite with coverage
      command_type: shell
Field Required Description
name Yes Command identifier
file Yes Relative path to script
description Yes What the command does
command_type Yes Type: shell or slash

Installation Paths

IDE Installed To
Claude Code .claude/commands/<name>.sh
Roo Code .roo/commands/<name>.md

Resources

Resources are arbitrary files -- configuration templates, .gitignore files, editor configs, or any other file that should be part of the project setup.

Manifest Entry

components:
  resources:
    - name: gitignore
      file: resources/.gitignore
      description: Python-specific gitignore
      install_path: .gitignore
      checksum: sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      size: 450
Field Required Description
name Yes Resource identifier
file Yes Relative path in package
description Yes What the resource is
install_path Yes Where to install relative to project root
checksum Yes SHA-256 checksum for integrity
size Yes File size in bytes

Resources are copied verbatim (both text and binary files are supported).

IDE Supported
Claude Code Yes
Cursor Yes
Windsurf Yes
Kiro Yes
Cline Yes
Roo Code Yes
Codex CLI Yes
GitHub Copilot No