Build tool for AI coding skills — compiles skill definitions into tool-specific output
Project description
aictrl
Build tool for AI coding skills — compiles skill definitions into tool-specific output for Claude Code, Cursor, and other AI coding assistants.
Think dbt for AI skills: define your team's coding skills once in YAML, build them into the format each tool expects.
Install
pip install aictrl
Quick Start
If your repo already has an .aictrl/ directory (set up by aictrl.dev or manually):
aictrl build
This reads skill definitions from .aictrl/data/skills/ and renders them into .claude/ and .cursor/ folders.
To start from scratch:
aictrl init --org-id my-org
# Add skill YAML files to .aictrl/data/skills/
aictrl build
Commands
| Command | Description |
|---|---|
aictrl build |
Build .claude/ and .cursor/ from skill data |
aictrl build --target claude |
Build only Claude Code output |
aictrl build --target cursor |
Build only Cursor output |
aictrl check |
Check if build is stale (CI-friendly, exits 1 if stale) |
aictrl clean |
Remove build output |
aictrl status |
Show installed skill versions |
aictrl init |
Initialize .aictrl/ scaffold |
aictrl install-hook |
Install git post-checkout hook for auto-builds |
How It Works
Directory Structure
your-repo/
├── .aictrl/ # Committed to git
│ ├── config.yaml # Org connection config
│ ├── skills.lock # Locked versions + checksums
│ ├── data/
│ │ ├── org.yaml # Organization metadata
│ │ └── skills/ # Skill definitions (YAML)
│ │ ├── code-review.yaml
│ │ └── testing-guide.yaml
│ └── overrides/
│ └── skills/ # Team customizations (partial YAML)
│ └── code-review.yaml
├── .claude/ # Gitignored — built output
│ ├── skills/
│ │ └── code-review/
│ │ └── code-review.md
│ ├── settings.json
│ └── hooks/
│ └── skill-telemetry.sh
└── .cursor/ # Gitignored — built output
├── hooks.json
└── hooks/
└── skill-telemetry.sh
Build Flow
.aictrl/data/skills/code-review.yaml (base skill from aictrl)
+ .aictrl/overrides/skills/code-review.yaml (team customizations)
→ rendered through Jinja2 templates
→ .claude/skills/code-review/code-review.md
→ .cursor/ hook configs
Skill YAML Format
Each skill is a self-contained YAML file:
slug: code-review
name: code-review
description: "Guides thorough code reviews"
version: "1.2.3"
instructions: |
You are a code review assistant. Focus on:
1. Security vulnerabilities
2. Performance implications
3. Code readability
sections:
checklist: |
## Review Checklist
- [ ] No hardcoded secrets
- [ ] Error handling is complete
tags: [review, quality]
allowed_tools: [Bash, Read, Grep]
Overrides
Customize skills for your team without forking. Create partial YAML files in overrides/skills/:
# .aictrl/overrides/skills/code-review.yaml
# Only include fields you want to change.
allowed_tools:
- Bash
- Read
- Grep
- Edit
sections:
team_standards: |
## Our Standards
- Always check test coverage
- Review error handling patterns
Merge rules:
- Scalars: override replaces base
- Lists: override replaces base entirely
- Dicts: deep merge (override keys win)
_delete: [key1, key2]: removes keys from base
Overrides survive skill updates — when aictrl pushes new skill versions, your customizations are merged on top automatically.
Auto-build on Checkout
Install a git hook so skills rebuild after git pull, git checkout, or git merge:
aictrl install-hook
CI Integration
Use aictrl check in CI to ensure builds aren't stale:
# .github/workflows/ci.yml
- name: Check skills are built
run: |
pip install aictrl
aictrl check
Integration with aictrl.dev
aictrl.dev manages skills centrally and pushes updates to your repos via PR:
- aictrl creates a PR updating
.aictrl/data/skills/andskills.lock - Your team reviews and merges
- Developers run
aictrl build(or it auto-builds via post-checkout hook) .claude/and.cursor/are regenerated with latest skills + your overrides
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aictrl-0.1.2.tar.gz.
File metadata
- Download URL: aictrl-0.1.2.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c51156c0ec3b235d7f3e9c78d7d21e943dc274c04e60c05995053352b4421c3
|
|
| MD5 |
2482fea06e1bdce3f3ab1e473a76bbef
|
|
| BLAKE2b-256 |
5cbee7219d7bd7ddc09eaaa0fa977ff79e1bc749da86c1bcb0c1be1e8f4744ef
|
Provenance
The following attestation bundles were made for aictrl-0.1.2.tar.gz:
Publisher:
publish.yml on aictrl-dev/aictrl-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aictrl-0.1.2.tar.gz -
Subject digest:
9c51156c0ec3b235d7f3e9c78d7d21e943dc274c04e60c05995053352b4421c3 - Sigstore transparency entry: 953229947
- Sigstore integration time:
-
Permalink:
aictrl-dev/aictrl-cli@5b99791784808a8488c0b4b08cf9a189ff0ed6e8 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/aictrl-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5b99791784808a8488c0b4b08cf9a189ff0ed6e8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aictrl-0.1.2-py3-none-any.whl.
File metadata
- Download URL: aictrl-0.1.2-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
837213f1c6dbb445b50e2cc69e40a2ed26ab71d10cf46d36438e4d90ef7d9ad3
|
|
| MD5 |
490f6a569c4a7d88de6d30d70f4352f2
|
|
| BLAKE2b-256 |
1186bb35f45beb45610ba90248a76fe09e1905c89f6d05b175e0507743f21b68
|
Provenance
The following attestation bundles were made for aictrl-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on aictrl-dev/aictrl-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aictrl-0.1.2-py3-none-any.whl -
Subject digest:
837213f1c6dbb445b50e2cc69e40a2ed26ab71d10cf46d36438e4d90ef7d9ad3 - Sigstore transparency entry: 953229949
- Sigstore integration time:
-
Permalink:
aictrl-dev/aictrl-cli@5b99791784808a8488c0b4b08cf9a189ff0ed6e8 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/aictrl-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5b99791784808a8488c0b4b08cf9a189ff0ed6e8 -
Trigger Event:
push
-
Statement type: