Local home base for AI agent skills, MCP servers, profiles, and Claude Code setup
Project description
My AI Home
A local control center for Claude Code skills, MCP servers, profiles, and project/global setup.
my-ai-home installs the myai command. Use it when you keep reusable AI-agent capabilities in a personal MY_AI_ROOT workspace and want to install only the relevant skills and MCP servers into each Claude Code project.
It is built for people who maintain many local skills, MCP configs, and project presets, but still want project installs to be explicit, reviewable, and safe.
[!IMPORTANT] The package is currently alpha. The registry format is intentionally small and versioned, but command behavior may still evolve.
Why use it?
- One home for agent capabilities — keep skills, MCP definitions, and profiles in a single
MY_AI_ROOTworkspace. - Project-scoped installs — install symlinks into
<project>/.claude/skills/and MCP entries into<project>/.mcp.json. - Global scope is explicit — use
myai globalwhen you really want to manage Claude Code user/global config. - Profiles for repeatable setup — define curated bundles such as
coding, then preview or apply them per project. - Safe planning flow — inspect planned changes before writing; unmanaged project-owned entries are not overwritten implicitly.
- Agent-friendly registries — YAML registries are the machine source of truth; Markdown manifests remain human documentation.
Table of contents
Quickstart
Install the CLI, create or migrate a workspace, then manage a project from that project directory.
uv tool install my-ai-home
myai migrate --target ~/my_ai
export MY_AI_ROOT=~/my_ai
myai registry check
cd /path/to/project
myai plan --profile coding
myai apply --profile coding
Run myai with no subcommand in an interactive terminal to open the Textual TUI.
cd /path/to/project
myai
In non-interactive contexts, myai prints a project summary instead.
Installation
From PyPI
uv tool install my-ai-home
myai --help
From source
git clone https://github.com/Cookie-HOO/my-ai-home.git
cd my-ai-home
uv tool install -e .
myai --help
Requirements
- Python
>=3.11 uvfor the recommended install and development workflow- Claude Code if you want the generated
.claude/skills/and.mcp.jsonproject files to be consumed directly
Core concepts
MY_AI_ROOT
MY_AI_ROOT points to your personal AI workflow workspace:
my_ai/
skills/
registry.yaml
custom/
installed/
SKILL_MANIFEST.md
mcps/
registry.yaml
MCP_MANIFEST.md
profiles/
registry.yaml
tools/
TOOL_MANIFEST.md
EXTERNAL_TOOLS.md
Machine-readable sources of truth:
skills/registry.yamlmcps/registry.yamlprofiles/registry.yaml
Markdown manifest files are for humans and agents. They are not parsed as the machine source of truth.
Scopes
| Command | Scope | Writes to |
|---|---|---|
myai |
Current project | <project>/.claude/skills/, <project>/.mcp.json |
myai migrate |
Bootstrap workspace | Target MY_AI_ROOT skeleton and imported file-backed config where safe |
myai global |
Claude Code user/global config | Claude Code global/user-scope skills and MCP config |
Project mode refuses to run inside ~/.claude so global changes are never inferred from the current directory. Use myai migrate or myai global for that scope.
Managed vs project-owned entries
myai distinguishes entries it manages from entries already owned by a project:
- Managed skill installs are symlinks pointing into
MY_AI_ROOT. - Managed MCP installs include
MYAI_*marker env keys injected bymyai. - Existing unmarked MCP entries are treated as project-owned and are not overwritten implicitly.
Usage
Open the project TUI
cd /path/to/project
myai
The TUI lets you:
- choose a profile or custom selection,
- toggle skills and MCP servers,
- review the generated plan,
- apply the plan after confirmation.
Inspect project state
myai doctor
Shows detected skills and MCP servers for the current project, including whether each entry is managed, project-owned, broken, orphaned, or conflicting.
List available registry entries
myai list skills
myai list mcps
myai list profiles
Preview and apply a project profile
myai plan --profile coding
myai apply --profile coding
Use --yes to apply without an interactive confirmation:
myai apply --profile coding --yes
Bootstrap or migrate a workspace
myai migrate --target ~/my_ai --dry-run
myai migrate --target ~/my_ai
export MY_AI_ROOT=~/my_ai
myai migrate creates a workspace skeleton and imports file-backed global skills or global MCP config where safe. It does not delete or mutate old global Claude Code config.
Validate registries
myai registry check
Manage global/user scope explicitly
myai global
myai global doctor
myai global list skills
myai global list mcps
myai global plan --profile coding
Global operations are intentionally separate from project operations.
Command reference
myai [OPTIONS] COMMAND [ARGS]...
Commands:
doctor Inspect current project state.
plan Preview project changes for a profile.
apply Apply project changes for a profile.
migrate Create or update a MY_AI_ROOT workspace.
list List registry entries.
registry Validate registries.
global Manage Claude Code global/user scope explicitly.
Common options:
| Command | Options |
|---|---|
myai plan |
--profile, -p |
myai apply |
--profile, -p, --yes |
myai migrate |
--target PATH, --dry-run, --yes |
Use --help for the full generated help:
myai --help
myai plan --help
myai migrate --help
myai registry --help
Registry format
All registries are YAML files with version: 1.
Skill registry
version: 1
skills:
readme-writing-polish:
name: readme-writing-polish
path: skills/custom/readme-writing-polish
sourceType: custom
install:
type: symlink
description: README writing and polishing.
recommendedFor: [coding, docs]
tags: [readme, writing]
sensitivity: normal
status: active
Rules:
- The registry key and
namemust match. pathis relative toMY_AI_ROOT.- The target directory must contain
SKILL.md. sourceTypeiscustomorinstalled.install.typeis currentlysymlink.sensitivityis one ofnormal,personal,internal,secret-adjacent.statusis one ofactive,deprecated,hidden.
MCP registry
version: 1
servers:
fetch:
name: fetch
description: Fetch URL content.
category: [web]
recommendedFor: [coding, research]
tags: [fetch, web]
status: active
config:
type: stdio
command: uvx
args:
- mcp-server-fetch
requires:
externalTools: [uv]
env: []
auth: []
files: []
safety:
network: true
opensBrowser: false
writesFiles: false
externalService: true
notes: Accesses external network resources.
Rules:
- The registry key and
namemust match. configis copied into project.mcp.jsonwhen installed.- Do not store tokens, cookies, API keys, passwords, or private env file contents in
mcps/registry.yaml. MYAI_*env keys are reserved. Do not write them in registry config;myaiinjects markers only into project installs.
Profile registry
version: 1
profiles:
coding:
name: coding
title: Coding project
description: Basic Claude Code setup for software projects.
status: active
tags: [coding]
skills:
required: [brainstorming]
recommended: [modern-python]
optional: [readme-writing-polish]
mcps:
required: [fetch]
recommended: []
optional: [playwright]
Rules:
- The registry key and
namemust match. requiredandrecommendedare default selections, not hard policy; users can deselect them in the TUI.- Profile entries reference existing skill and MCP IDs. They do not copy skill contents or MCP config.
Safety boundaries
myai is designed to avoid surprising project/global changes:
- Project mode only writes
.claude/skills/and.mcp.jsonin the target project. - Skills are symlinked into projects; skill contents are not copied.
- Existing project-owned MCP entries are not overwritten implicitly.
- MCP registry entries should reference env vars or env files instead of storing secrets.
MYAI_*marker env keys are reserved formyaiownership tracking.- Plugin-provided skills and MCPs remain managed by their plugins.
myai migratedoes not delete or mutate old global Claude Code config.- Global/user-scope changes require explicit
myai globalcommands.
Development
uv sync --all-groups
uv run myai --help
uv run ruff check .
uv run pytest
uv run ty check src/
uv build
The test suite currently covers registry loading, MCP ownership classification, project planning, and project-owned MCP conflict handling.
Publishing
PyPI Trusted Publishing configuration:
- GitHub repository:
Cookie-HOO/my-ai-home - Workflow:
.github/workflows/pypi-publish.yml - Environment:
pypi - Trigger: GitHub release published, or manual
workflow_dispatch
The workflow runs lint, tests, type checks, builds the package, then publishes dist/ with pypa/gh-action-pypi-publish.
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 my_ai_home-0.1.0.tar.gz.
File metadata
- Download URL: my_ai_home-0.1.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f9845c2b66a0bc9f710eb80e7fbb89dde6d1675776328ee923ed5137789f314
|
|
| MD5 |
f16dca593460e0000b3563f7c2a6151d
|
|
| BLAKE2b-256 |
63ddc8d53f37ceecb9db19cab88a75dd4150ac3d8585385dc4b6caa36148de56
|
Provenance
The following attestation bundles were made for my_ai_home-0.1.0.tar.gz:
Publisher:
pypi-publish.yml on Cookie-HOO/my-ai-home
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
my_ai_home-0.1.0.tar.gz -
Subject digest:
7f9845c2b66a0bc9f710eb80e7fbb89dde6d1675776328ee923ed5137789f314 - Sigstore transparency entry: 1995802833
- Sigstore integration time:
-
Permalink:
Cookie-HOO/my-ai-home@2546f34733f742e1d2c40a578ff73adfdc4c4165 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Cookie-HOO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@2546f34733f742e1d2c40a578ff73adfdc4c4165 -
Trigger Event:
release
-
Statement type:
File details
Details for the file my_ai_home-0.1.0-py3-none-any.whl.
File metadata
- Download URL: my_ai_home-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e1d81249a2b193e354b8d725abbbf298624007543d060375a460d162efc39c4
|
|
| MD5 |
2d114b06df4a430b6993db43b7443d89
|
|
| BLAKE2b-256 |
95b660dc2ecfd5aa84a55d6488ae093fec4234369ba92fac550107fcd891319f
|
Provenance
The following attestation bundles were made for my_ai_home-0.1.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on Cookie-HOO/my-ai-home
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
my_ai_home-0.1.0-py3-none-any.whl -
Subject digest:
3e1d81249a2b193e354b8d725abbbf298624007543d060375a460d162efc39c4 - Sigstore transparency entry: 1995802934
- Sigstore integration time:
-
Permalink:
Cookie-HOO/my-ai-home@2546f34733f742e1d2c40a578ff73adfdc4c4165 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Cookie-HOO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@2546f34733f742e1d2c40a578ff73adfdc4c4165 -
Trigger Event:
release
-
Statement type: