Agent skill
33god-creating-and-working-with-projects
Required skill for all 33GOD project creation and task execution workflows. Use this skill when: (1) Creating new projects from scratch or cloning existing repos, (2) Starting any new task from Bloodbank commands, Plane tickets, or Yi assignments, (3) Managing agent worktree allocation and release, (4) Enforcing worktree-to-task source linking, (5) Ensuring proper agent accountability through commit requirements. This skill supersedes 33god-imi-worktree-management and frames iMi as the mandatory workflow orchestration layer for all 33GOD pipeline work.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/33god-creating-and-working-with-projects
SKILL.md
33GOD: Creating and Working with Projects
Core Philosophy
iMi is the Project Registry: Every 33GOD project must be registered through iMi. Every unit of work must be executed within an iMi-managed worktree. This is non-negotiable for the 33GOD pipeline.
Events Drive Everything: All 33GOD work emits events through Bloodbank. Worktrees emit worktree.created, tasks emit agent.task.*, and the heartbeat system (system.heartbeat.tick) orchestrates agent coordination every 60 seconds.
Entity-Based Workspace Isolation: All actors (humans and Yi agents) are equal entities with token-based authentication. Each entity has a completely isolated workspace directory. No more shared .iMi cluster hubs.
Universal Identity: Once registered, a project has a UUID that is referenced across all 33GOD components (Bloodbank events, Plane tickets, Yi orchestrations, Flume task management). Entities also have UUIDs for cross-component identity resolution.
Worktree = Work Unit: Each worktree represents a discrete unit of work traceable to a specific task source. All worktrees live within entity workspaces for complete isolation and accountability.
Accountability Through Code: Agents cannot release worktrees until changes are staged and committed. The git history + workspace access logs + Bloodbank events become the audit trail for all actions.
When to Use This Skill
REQUIRED: Project Creation
Trigger: User or agent needs to create a new 33GOD project
Scenarios:
- From Scratch: Create new GitHub repo, initialize git, scaffold boilerplate
- From Existing Repo: Clone existing GitHub repo and register as 33GOD project
- From PRD Document: Generate project from specification file
Commands:
# New project with AI-generated scaffold
imi project create --concept "FastAPI backend for ChoreScore gamification" --name ChoreScore
# New project from PRD document
imi project create --prd ./project-specs.md
# New project with explicit stack/database payload
imi project create --payload '{"name":"MyApp","stack":"react","database":"postgres"}'
# Clone and register existing repo
git clone [email protected]:user/existing-repo.git
cd existing-repo
imi init
# Initialize local repo (already exists)
cd /path/to/existing/repo
imi init
What Happens:
- GitHub repo created (if new) or validated (if existing)
- Project registered in PostgreSQL with globally unique UUID
- Entity workspace claimed for this project (e.g.,
/home/you/33GOD/workspaces/delorenj/myproject/) - Full clone created in entity workspace (not shared cluster hub)
trunk-mainworktree created for main branch- Project UUID returned for reference in Bloodbank/Yi/Flume
Critical: imi init requires authentication via $IMI_IDENTITY_TOKEN. The entity associated with the token owns the workspace. There is no separate "register" step. Initialization = Registration + Workspace Claim.
REQUIRED: Starting New Work
Trigger: Agent receives a task from any source
Task Sources (must link to worktree):
- Plane Ticket:
plane_ticket_idfrom managing-tickets-and-tasks-in-plane skill - Bloodbank Command:
correlation_idfrom rabbitmq message - Yi Orchestration:
orchestrator_idfrom agent assignment - Sprint Board: Task ID from external project management system
Before Starting Work:
# Check for in-flight work to avoid conflicts
imi list --json | jq '.data[] | select(.has_uncommitted_changes == true)'
# Check project status
imi status
# Create typed worktree linked to task source
imi add feat user-authentication
# OR: imi add fix login-bug
# OR: imi add aiops mcp-tool-refactor
# OR: imi add devops ci-migration
# OR: imi add review 123 # For PR reviews
Link Task Source (TODO - needs implementation):
# Store task source metadata in worktree
imi metadata set --worktree feat-user-authentication \
--key plane_ticket_id \
--value "PROJ-123"
# OR for Bloodbank task
imi metadata set --worktree feat-user-authentication \
--key bloodbank_correlation_id \
--value "bb-8f3a9c2e"
# OR for Yi orchestration
imi metadata set --worktree feat-user-authentication \
--key yi_orchestrator_id \
--value "yi-orch-5d2b1a"
Agent Claim (TODO - needs implementation):
# Claim worktree for exclusive access
imi claim feat-user-authentication --yi-id "claude-sonnet-4.5-agent-001"
# Check who owns a worktree
imi show feat-user-authentication --json | jq '.data.agent_id'
What Happens:
- New worktree created with type-specific branch/directory naming
- Task source metadata stored in JSONB
worktrees.metadatacolumn - Agent ID recorded in
worktrees.agent_idcolumn (when claim implemented) .iMi/presence/<worktree>.lockfile created for signaling- Worktree path returned for agent to
cdinto
Complete Command Reference
Project Lifecycle
imi init [repo] [--force]
Initialize iMi in current directory or clone from GitHub.
Behaviors:
- No args: Register current directory as 33GOD project
- With repo: Clone
owner/repofrom GitHub then register - With --force: Re-initialize even if already initialized
What It Does:
- Registers project in PostgreSQL (assigns UUID)
- Creates
.iMi/cluster hub at parent of trunk - Writes
.iMi/project.jsonwith project metadata - Creates
trunk-<branch>worktree for main branch
Example:
# Initialize existing repo
cd /home/user/code/MyProject
imi init
# Clone and initialize
imi init delorenj/ChoreScore
imi project create [--concept|--prd|--name|--payload]
Bootstrap complete new project with GitHub integration.
Parameters:
--concept: Natural language project description--prd: Path to PRD markdown file--name: Explicit project name (optional, inferred otherwise)--payload: JSON string with structured definition
Stack Detection:
- PythonFastAPI: Creates
pyproject.toml, mise tasks, docker-compose - ReactVite: Creates
package.json, vite config, shadcn setup - Generic: Creates basic README and git structure
Example:
imi project create \
--concept "FastAPI task manager with Postgres and Redis" \
--name TaskMaster
Worktree Creation
imi add <type> <name> [--repo] [--pr]
Unified command to create worktrees of any type.
Built-in Types:
feat- Feature development (branch:feat/, dir:feat-)fix- Bug fixes (branch:fix/, dir:fix-)aiops- AI operations: agents, rules, MCP configs, workflows (branch:aiops/, dir:aiops-)devops- DevOps tasks: CI, repo organization, deploys (branch:devops/, dir:devops-)review- Pull request reviews (branch:pr-review/, dir:pr-review-)
Custom Types:
Use imi types add <name> to create custom types with your own prefixes.
Examples:
# Create feature worktree
imi add feat user-authentication
# Create fix worktree
imi add fix login-redirect-bug
# Create AI ops worktree
imi add aiops mcp-server-integration
# Create DevOps worktree
imi add devops github-actions-ci
# Create review worktree (special - requires PR number)
imi add review 123 --pr 123
Legacy Type Commands (Deprecated)
These still work but emit deprecation warnings:
imi feat <name> # Use: imi add feat <name>
imi fix <name> # Use: imi add fix <name>
imi aiops <name> # Use: imi add aiops <name>
imi devops <name> # Use: imi add devops <name>
imi review <pr_number> [repo]
Create worktree for reviewing a pull request.
Requirements:
- GitHub CLI (
gh) must be installed and authenticated - PR must exist in the repository
What It Does:
- Fetches PR from GitHub via
gh pr view <pr> - Creates
pr-review-<number>worktree - Checks out PR branch
- Displays PR metadata (title, author, description)
Example:
# Review PR in current repo
imi review 456
# Review PR in specific repo
imi review 456 delorenj/ChoreScore
Type Management
imi types list
List all available worktree types (built-in + custom).
Output:
Built-in Types:
feat Feature development (feat/, feat-)
fix Bug fixes (fix/, fix-)
aiops AI operations (aiops/, aiops-)
devops DevOps tasks (devops/, devops-)
review Pull request reviews (pr-review/, pr-review-)
trunk Main branch (empty prefix)
Custom Types:
experiment Experimental features (experiment/, experiment-)
imi types add <name> [--branch-prefix] [--worktree-prefix] [--description]
Add custom worktree type.
Parameters:
name: Type name (lowercase, alphanumeric, hyphens)--branch-prefix: Branch prefix (defaults to<type>/)--worktree-prefix: Worktree directory prefix (defaults to<type>-)--description: Human-readable description
Example:
imi types add experiment \
--description "Experimental features and prototypes"
# Creates type with:
# - Branch: experiment/<name>
# - Directory: experiment-<name>
imi types remove <name>
Remove custom worktree type.
Protection: Built-in types (feat, fix, aiops, devops, review, trunk) cannot be removed.
Example:
imi types remove experiment
Navigation and Discovery
imi go [query] [-r|--repo] [-w|--worktrees-only] [-a|--include-inactive]
Navigate to worktree or repository using fuzzy search.
Behaviors:
- No args: Interactive picker of all worktrees + repos
- With query: Fuzzy search by name/branch/path
- With --repo: Limit search to specific repo
- With --worktrees-only: Exclude trunk and repo roots
- With --include-inactive: Include closed/merged worktrees
Returns in JSON mode:
{
"success": true,
"data": {
"target_path": "/home/user/code/Project/feat-user-auth",
"worktree_name": "feat-user-auth",
"branch_name": "feat/user-auth"
}
}
Example:
# Interactive picker
imi go
# Fuzzy search
imi go user-auth
# Navigate and change directory
cd $(imi go user-auth --json | jq -r '.data.target_path')
# Search within specific repo
imi go auth --repo ChoreScore
imi trunk [repo]
Switch to trunk worktree (main branch).
Example:
# Switch to trunk in current repo
imi trunk
# Switch to trunk in specific repo
imi trunk ChoreScore
imi list [--worktrees|--projects] [repo]
List all active worktrees or projects.
Modes:
- Default: Lists both projects and their worktrees
- --worktrees: Only worktrees
- --projects: Only projects/repositories
JSON Output (for programmatic access):
{
"success": true,
"data": [
{
"id": "uuid",
"name": "feat-user-auth",
"type": "feat",
"branch": "feat/user-auth",
"path": "/path/to/worktree",
"agent_id": "claude-sonnet-4.5-001",
"has_uncommitted_changes": true,
"uncommitted_files_count": 5,
"ahead_of_trunk": 3,
"behind_trunk": 0,
"metadata": {
"plane_ticket_id": "PROJ-123"
}
}
]
}
Example:
# List all
imi list
# List only worktrees
imi list --worktrees
# List for specific repo
imi list ChoreScore
# JSON mode for scripting
imi list --json | jq '.data[] | select(.agent_id != null)'
imi status [repo]
Show comprehensive status of all worktrees.
What It Shows:
- Worktree name and type
- Current branch
- Uncommitted changes count
- Ahead/behind trunk status
- Agent ID (if claimed)
- Last commit info
Example:
# Status for all repos
imi status
# Status for specific repo
imi status ChoreScore
Worktree Lifecycle
imi remove <name> [--keep-branch] [--keep-remote] [repo]
Remove a worktree.
Default Behavior:
- Removes worktree directory
- Deletes local branch
- Deletes remote branch (if pushed)
- Marks worktree as inactive in database
Options:
--keep-branch: Keep local branch after removing worktree--keep-remote: Keep remote branch (requires --keep-branch)
Safety Checks:
- Warns if uncommitted changes exist
- Confirms before deleting branches
Example:
# Remove worktree and all branches
imi remove feat-user-auth
# Remove worktree but keep branches
imi remove feat-user-auth --keep-branch --keep-remote
imi close <name> [repo]
Close a worktree without merging (cancel the branch).
Use Case: Abandoned work, experimental branches, false starts
What It Does:
- Removes worktree directory
- Deletes local and remote branches
- Marks as closed in database
- Does NOT merge to trunk
Example:
imi close feat-experimental-feature
imi merge [name] [repo]
Merge a worktree into trunk-main and close it.
Behaviors:
- No args: Merges current branch (if in worktree)
- With name: Merges specified worktree
What It Does:
- Switches to trunk-main
- Merges worktree branch
- Pushes to remote
- Removes worktree
- Records merge metadata in database
Example:
# Merge current worktree
imi merge
# Merge specific worktree
imi merge feat-user-auth
Maintenance and Sync
imi sync [repo]
Synchronize database with actual Git worktrees.
What It Does:
- Discovers worktrees on filesystem not in database
- Marks database entries as inactive if worktree deleted
- Updates git state (uncommitted changes, ahead/behind)
- Reconciles any inconsistencies
Use Case: After manual git operations, after system crashes, periodic health checks
Example:
# Sync all repos
imi sync
# Sync specific repo
imi sync ChoreScore
imi prune [--dry-run] [--force] [repo]
Clean up stale worktree references from Git.
What It Does:
- Removes
.git/worktrees/entries for deleted worktrees - Cleans up orphaned directories
- Updates database to match reality
Options:
--dry-run: Show what would be removed without doing it--force: Remove without confirmation prompts
Example:
# Dry run to preview
imi prune --dry-run
# Actually prune
imi prune --force
imi repair
Repair repository paths in database after directories moved.
Use Case: Moved home directory, cloned to new machine, restructured code folder
What It Does:
- Auto-detects moved repositories
- Updates all paths in database
- Validates git remotes match
Example:
imi repair
Monitoring
imi monitor [repo]
Start real-time monitoring of worktree activities.
What It Displays:
- File changes (created, modified, deleted)
- Git commits
- Worktree switching
- Agent activities
Use Case: Observing agent work, debugging workflows, activity logging
Example:
# Monitor all repos
imi monitor
# Monitor specific repo
imi monitor ChoreScore
Utilities
imi completion <shell>
Generate shell completions for iMi.
Supported Shells:
- bash
- zsh
- fish
- powershell
Example:
# Generate zsh completions
imi completion zsh > ~/.zsh/completions/_imi
# Source in .zshrc
fpath=(~/.zsh/completions $fpath)
autoload -Uz compinit && compinit
Commands That Need Implementation
imi claim <name> --yi-id <id>
Claim a worktree for exclusive agent access.
What It Should Do:
- Check if worktree already claimed (error if so)
- Update
worktrees.agent_idcolumn with Yi ID - Create
.iMi/presence/<worktree>.lockfile - Log activity to
agent_activitiestable - Return success with worktree metadata
Usage:
imi claim feat-user-auth --yi-id "claude-sonnet-4.5-001"
Error Cases:
- Worktree doesn't exist
- Worktree already claimed by another agent
- Agent ID not provided
imi release <name> --yi-id <id>
Release a worktree (must have clean state).
What It Should Do:
- Verify agent owns the worktree (
worktrees.agent_idmatches) - Check for uncommitted changes (
git status) - Fail if dirty state (changes not committed)
- Clear
worktrees.agent_idcolumn (set to NULL) - Remove
.iMi/presence/<worktree>.lockfile - Log release activity
- Return success
Usage:
# Will fail if uncommitted changes
imi release feat-user-auth --yi-id "claude-sonnet-4.5-001"
Error Cases:
- Worktree doesn't exist
- Agent doesn't own the worktree
- Uncommitted changes detected
- Yi ID not provided
Required Flow:
# Must commit before release
git add .
git commit -m "feat: Implement feature
Plane-Ticket: PROJ-123
Yi-ID: claude-sonnet-4.5-001
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>"
# Now release succeeds
imi release feat-user-auth --yi-id "claude-sonnet-4.5-001"
imi metadata set --worktree <name> --key <key> --value <value>
Set metadata on a worktree.
What It Should Do:
- Load worktree from database
- Parse existing
metadataJSONB column - Set key-value pair (merging with existing)
- Update database with new metadata
- Return success
Usage:
# Link to Plane ticket
imi metadata set --worktree feat-user-auth \
--key plane_ticket_id \
--value "PROJ-123"
# Link to Bloodbank correlation
imi metadata set --worktree feat-user-auth \
--key bloodbank_correlation_id \
--value "bb-8f3a9c2e"
# Link to Yi orchestrator
imi metadata set --worktree feat-user-auth \
--key yi_orchestrator_id \
--value "yi-orch-5d2b1a"
# Custom metadata
imi metadata set --worktree feat-user-auth \
--key priority \
--value "high"
imi metadata get --worktree <name> [--key <key>]
Get metadata from a worktree.
What It Should Do:
- Load worktree from database
- If
--keyprovided: return single value - If no key: return entire metadata object
- Support JSON output mode
Usage:
# Get specific key
imi metadata get --worktree feat-user-auth --key plane_ticket_id
# Output: PROJ-123
# Get all metadata (JSON mode)
imi metadata get --worktree feat-user-auth --json
# Output: {"plane_ticket_id": "PROJ-123", "yi_orchestrator_id": "yi-orch-5d2b1a"}
JSON Output Mode
ALL commands support --json flag for programmatic access.
Standard Response Format:
{
"success": true,
"data": { ... },
"error": null
}
Error Format:
{
"success": false,
"data": null,
"error": "Worktree not found: feat-nonexistent"
}
Usage Examples:
# Parse with jq
imi list --json | jq '.data[] | select(.type == "feat")'
# Extract path for cd
cd $(imi go user-auth --json | jq -r '.data.target_path')
# Check for errors in scripts
if ! result=$(imi add feat demo --json); then
echo "Failed to create worktree"
exit 1
fi
Worktree Lifecycle Rules
Rule 1: One Agent Per Worktree
Enforcement: The worktrees.agent_id column tracks the currently assigned agent.
Multi-Contributor Pattern:
- Multiple agents CAN contribute to the same worktree over time
- Only ONE agent may be active at any given moment
agent_activitiestable tracks full history of all contributors
Example:
# Agent A starts work
imi claim feat-user-auth --yi-id "agent-a"
# ... agent-a works, commits, pushes ...
# Agent A hands off to Agent B
imi release feat-user-auth --yi-id "agent-a"
imi claim feat-user-auth --yi-id "agent-b"
# ... agent-b continues, commits, pushes ...
Rule 2: Release Requires Clean State
Enforcement: imi release command checks for uncommitted changes before releasing.
Release Checklist:
- All changes staged:
git add . - Changes committed:
git commit -m "..." - Commit message includes Yi ID and task source
- Optional: Changes pushed to remote
Commit Format (enforced):
git commit -m "feat: Implement user authentication endpoint
Implemented JWT-based authentication with refresh tokens.
Added password hashing with bcrypt.
Created login/logout/refresh endpoints.
Plane-Ticket: PROJ-123
Yi-ID: claude-sonnet-4.5-agent-001
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>"
Why This Matters: The git history becomes the authoritative audit trail. If changes aren't committed, there's no record of who did what. Uncommitted changes = unaccountable work.
Rule 3: Task Source Must Be Linkable
Enforcement: Every worktree must have at least ONE of these metadata keys:
plane_ticket_idbloodbank_correlation_idyi_orchestrator_idsprint_board_task_id
Verification:
# Query worktrees missing task source links
psql -U imi -d imi -c "
SELECT id, name, agent_id
FROM worktrees
WHERE active = TRUE
AND metadata @> '{}'::jsonb;
"
Why This Matters: Without task source linking, worktrees become orphaned. You can't trace back to "why was this work done?" or "who requested this?". Task linkage enables end-to-end traceability from request → assignment → work → completion.
Agent Workflow Patterns
Pattern 1: Bloodbank Task Execution
# 1. Agent receives message from Bloodbank queue
# Message contains: task_description, correlation_id, priority
# 2. Create worktree based on task type
imi add feat user-profile-page
# 3. Link Bloodbank correlation ID (TODO - needs implementation)
imi metadata set --worktree feat-user-profile-page \
--key bloodbank_correlation_id \
--value "bb-a3f7d9e1"
# 4. Claim worktree (TODO - needs implementation)
imi claim feat-user-profile-page --yi-id "$YI_AGENT_ID"
# 5. Navigate and work
cd $(imi go feat-user-profile-page --json | jq -r '.data.target_path')
# ... implement feature ...
# 6. Commit with metadata
git add .
git commit -m "feat: User profile page
Correlation-ID: bb-a3f7d9e1
Yi-ID: $YI_AGENT_ID"
# 7. Release worktree (TODO - needs implementation)
imi release feat-user-profile-page --yi-id "$YI_AGENT_ID"
# 8. Publish completion event to Bloodbank
# (handled by iMi internally)
Pattern 2: Plane Ticket Assignment
# 1. Query next available ticket from Plane
plane_ticket=$(plane api issues list --state "todo" --limit 1 | jq -r '.[0].id')
# 2. Determine worktree type from ticket labels
ticket_type=$(plane api issues get $plane_ticket | jq -r '.labels[0].name')
# 3. Create worktree
imi add $ticket_type $(plane api issues get $plane_ticket | jq -r '.name')
# 4. Link Plane ticket (TODO - needs implementation)
imi metadata set --worktree <worktree-name> \
--key plane_ticket_id \
--value "$plane_ticket"
# 5. Claim, work, commit, release (same as above)
# 6. Update Plane ticket status
plane api issues update $plane_ticket --state "in_progress"
Pattern 3: Yi Orchestrator Handoff
# 1. Yi assigns task to agent with orchestrator_id
# 2. Check if worktree already exists (handoff from another agent)
existing_worktree=$(imi list --json | jq -r ".data[] | select(.metadata.yi_orchestrator_id == \"$ORCHESTRATOR_ID\") | .name")
if [ -z "$existing_worktree" ]; then
# New task - create worktree
imi add feat $TASK_NAME
imi metadata set --worktree feat-$TASK_NAME \
--key yi_orchestrator_id \
--value "$ORCHESTRATOR_ID"
else
# Handoff - claim existing worktree
echo "Taking over worktree: $existing_worktree"
fi
# 3. Claim worktree (TODO - needs implementation)
imi claim <worktree> --yi-id "$YI_AGENT_ID"
# 4. Work, commit, release
Integration with 33GOD Components
Bloodbank (Event Bus)
Published Events:
imi.project.created- New project registeredimi.worktree.created- New worktree allocatedimi.worktree.claimed- Agent claimed worktreeimi.worktree.released- Agent released worktreeimi.worktree.merged- Worktree merged to trunk
Consumed Events:
task.assigned- Trigger worktree creationproject.scaffold.requested- Trigger project creation
Plane (Sprint Board)
Integration Points:
- Worktree metadata stores
plane_ticket_id - Plane ticket custom fields store
imi_worktree_id(UUID) - Agent activities log references Plane ticket in description
- Plane webhooks trigger iMi worktree operations
Yi (Agent Orchestration)
Integration Points:
- Yi queries iMi for available worktrees before assignment
- Yi checks
worktrees.agent_idto avoid double-assignment - Yi resolves working paths via
get_project_working_path()function - Yi monitors in-flight work via
v_inflight_workview
Flume (Session/Task Manager)
Integration Points:
- Flume sessions map 1:1 to iMi worktrees
- Flume task lifecycle tied to worktree lifecycle
- Flume queries iMi for project UUIDs when creating tasks
MCP Tools Reference
iMi exposes 10 MCP tools via FastMCP server for Claude Desktop integration:
Creation Tools
create_worktree(name, worktree_type="feat", repo=None)create_review_worktree(pr_number, repo=None)create_project(concept=None, prd=None, name=None, payload=None)
Navigation Tools
list_worktrees(repo=None)navigate_worktree(query, repo=None)show_status(repo=None)
Cleanup Tools
remove_worktree(name, repo=None, keep_branch=False)sync_worktrees(repo=None)prune_worktrees(repo=None, dry_run=False)
Discovery Tools
list_types()
See /home/delorenj/.claude/skills/33god-imi-worktree-management/references/mcp-tools-reference.md for detailed schemas.
Database Schema Reference
Critical Tables
projects:
id(UUID) - Globally unique project identifierremote_origin(TEXT) - 1:1 mapping to GitHub URL (unique constraint)trunk_path(TEXT) - Filesystem path to trunk worktreemetadata(JSONB) - Extensible project metadata
worktrees:
id(UUID) - Globally unique worktree identifierproject_id(UUID FK) - Referencesprojects.idtype_id(INTEGER FK) - Referencesworktree_types.idagent_id(TEXT) - Currently assigned Yi agent (NULL if unclaimed)has_uncommitted_changes(BOOLEAN) - Dirty state flaguncommitted_files_count(INTEGER) - Number of uncommitted filesahead_of_trunk(INTEGER) - Commits ahead of trunkbehind_trunk(INTEGER) - Commits behind trunkmetadata(JSONB) - Task source links stored hereplane_ticket_idbloodbank_correlation_idyi_orchestrator_id
agent_activities:
id(UUID) - Activity identifieragent_id(TEXT) - Yi agent who performed actionworktree_id(UUID FK) - Worktree where action occurredactivity_type(TEXT) -created,modified,committed,pushed,mergeddescription(TEXT) - Human-readable description
Critical Functions
register_project(name, remote_origin, default_branch, trunk_path, metadata):
- Idempotent project registration
- Returns project UUID
- Enforces 1:1 remote_origin constraint
register_worktree(project_id, type_id, name, branch_name, path, agent_id, metadata):
- Creates worktree with proper FKs
- Validates type_id exists
- Returns worktree UUID
get_inflight_work(project_id):
- Returns all worktrees with uncommitted changes or divergence
- Useful for conflict detection before starting new work
get_project_working_path(project_id, worktree_name):
- Resolves canonical filesystem path
- Returns trunk path if worktree_name is NULL
- Returns worktree path if worktree_name provided
Error Handling and Edge Cases
Uncommitted Changes on Release
Error: imi release fails if git status shows dirty state
Resolution:
# Stage changes
git add .
# Commit with proper metadata
git commit -m "feat: Description
Plane-Ticket: PROJ-123
Yi-ID: $YI_AGENT_ID"
# Retry release
imi release <worktree> --yi-id "$YI_AGENT_ID"
Worktree Already Claimed
Error: imi claim fails if agent_id is already set
Resolution:
# Check current owner
imi show <worktree> --json | jq '.data.agent_id'
# Option 1: Current agent releases first
imi release <worktree> --yi-id "<current-agent>"
# Option 2: Force claim (emergency override)
imi claim <worktree> --yi-id "$YI_AGENT_ID" --force
Missing Task Source Link
Error: Worktree created without metadata linking to task source
Resolution:
# Retroactively add task source
imi metadata set --worktree <worktree> \
--key plane_ticket_id \
--value "PROJ-123"
# Verify
imi metadata get --worktree <worktree> --key plane_ticket_id
Project Already Registered
Error: imi init reports project already exists
Behavior: iMi is idempotent - returns existing project UUID without error
No Action Required: This is expected behavior for distributed registration
Deprecation Notice
Old Skill: 33god-imi-worktree-management
Status: Deprecated but still functional
Migration Path: Use 33god-creating-and-working-with-projects instead for all new workflows. The old skill focused on iMi's technical capabilities; the new skill focuses on when and why to use iMi in 33GOD workflows.
Implementation Roadmap
Commands Needing Implementation:
imi claim <name> --yi-id <id>- Agent worktree claimingimi release <name> --yi-id <id>- Agent worktree release with clean state checkimi metadata set --worktree <name> --key <k> --value <v>- Set metadataimi metadata get --worktree <name> [--key <k>]- Get metadata
Database Schema: Already supports all features (agent_id column, metadata JSONB column with GIN index)
Implementation Path:
- Add commands to
src/cli.rs - Implement handlers in
src/main.rs - Add database methods in
src/database.rsfor updating agent_id and metadata - Add lock file management in
src/local.rsfor.iMi/presence/directory
References
Architecture Documentation
/home/delorenj/code/iMi/trunk-main/docs/architecture-imi-project-registry.md- PostgreSQL schema:
/home/delorenj/code/iMi/trunk-main/migrations/001_create_schema.sql - Helper functions:
/home/delorenj/code/iMi/trunk-main/migrations/002_functions_and_helpers.sql
Related Skills
managing-tickets-and-tasks-in-plane- Sprint board integration33god-service-development- Microservice creation patterns33god-development-lifecycle- Meta-level orchestration
Database Connection
# Interactive psql session
/home/delorenj/code/iMi/trunk-main/scripts/psql-imi.sh
# Query example
/home/delorenj/code/iMi/trunk-main/scripts/psql-imi.sh -c "SELECT * FROM v_inflight_work"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?