Complete implementation of OurDigital skills with dual-platform support (Claude Desktop + Claude Code) following standardized structure. Skills created: - 01-ourdigital-brand-guide: Brand reference & style guidelines - 02-ourdigital-blog: Korean blog drafts (blog.ourdigital.org) - 03-ourdigital-journal: English essays (journal.ourdigital.org) - 04-ourdigital-research: Research prompts & workflows - 05-ourdigital-document: Notion-to-presentation pipeline - 06-ourdigital-designer: Visual/image prompt generation - 07-ourdigital-ad-manager: Ad copywriting & keyword research - 08-ourdigital-trainer: Training materials & workshop planning - 09-ourdigital-backoffice: Quotes, proposals, cost analysis - 10-ourdigital-skill-creator: Meta skill for creating new skills Features: - YAML frontmatter with "ourdigital" or "our" prefix triggers - Standardized directory structure (code/, desktop/, shared/, docs/) - Shared environment setup (_ourdigital-shared/) - Comprehensive reference documentation - Cross-skill integration support Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
8.2 KiB
GUARDRAILS.md - Ownership & Enforcement Rules
This document defines the ownership matrix, lock system, and enforcement mechanisms for multi-agent collaboration in this repository.
Collaboration Rules: See
AGENTS.mdfor handoff protocols and code standards.
1. Ownership Matrix
1.1 Ownership Categories
| Category | Description | Override |
|---|---|---|
| Primary | Agent has exclusive authority | Claude can override |
| Shared | Multiple agents can modify, requires coordination | Claude approves changes |
| Unrestricted | Any agent can modify | No restrictions |
1.2 Claude Code - Primary Ownership
Claude Code is the lead agent with primary ownership of:
| Pattern | Description |
|---|---|
CLAUDE.md |
Lead agent directive |
AGENTS.md |
Shared collaboration rules |
GUARDRAILS.md |
This file |
src/*/cli.py |
CLI entry points |
src/*/core/ |
Core logic modules |
src/*/main.py |
Main entry points |
1.3 Gemini - Primary Ownership
Gemini has primary ownership of:
| Pattern | Description |
|---|---|
GEMINI.md |
Gemini directive |
src/*/integrations/google/ |
Google API integrations |
src/*/integrations/gsc.py |
Google Search Console |
src/*/integrations/ga*.py |
Google Analytics |
docs/ |
Documentation (markdown) |
1.4 Codex - Primary Ownership
Codex has primary ownership of:
| Pattern | Description |
|---|---|
CODEX.md |
Codex directive |
src/*/models.py |
Pydantic/data models |
src/*/utils/ |
Utility functions |
tests/ |
All test files |
1.5 Shared Files
These files require coordination (Claude approves):
| Pattern | Coordination Rule |
|---|---|
pyproject.toml |
Dependency changes require discussion |
config/*.yaml |
Configuration changes affect all agents |
.github/workflows/ |
CI/CD changes impact everyone |
PROJECT_PLAN.md |
Roadmap changes need consensus |
1.6 Unrestricted Files
Any agent can modify these files:
| Pattern | Notes |
|---|---|
.agent-state/ |
Task and lock management |
.gitignore |
Git configuration |
README.md |
Project readme |
.pre-commit-config.yaml |
Pre-commit hooks |
2. Lock System
2.1 Lock Types
| Type | Description | Use Case |
|---|---|---|
exclusive |
Single agent can modify | Long-running refactors |
shared |
Multiple can read, one writes | Concurrent development |
override |
Claude override for conflicts | Emergency fixes |
2.2 Lock File Format
Location: .agent-state/locks.yaml
version: "1.0"
updated_at: "2025-01-29T12:00:00Z"
locks:
- path: "src/module/"
agent: "claude"
lock_type: "exclusive"
task_id: "TASK-001"
reason: "Refactoring core module"
created_at: "2025-01-29T10:00:00Z"
expires_at: "2025-01-29T14:00:00Z"
- path: "docs/api/"
agent: "gemini"
lock_type: "shared"
task_id: "TASK-002"
reason: "Updating API documentation"
created_at: "2025-01-29T11:00:00Z"
expires_at: "2025-01-29T15:00:00Z"
2.3 Lock Operations
Acquire Lock:
- Check if path is already locked
- If locked by another agent, wait or request release
- Add lock entry to locks.yaml
- Set expiration time (default: 4 hours)
Release Lock:
- Remove lock entry from locks.yaml
- Update
updated_attimestamp - Notify other agents if requested
Lock Expiration:
- Locks automatically expire at
expires_attime - Expired locks can be claimed by any agent
- Run
python tools/check-ownership.py --list-expiredto see expired locks
3. Task Claiming Protocol
3.1 Task File Format
Location: .agent-state/tasks.yaml
version: "1.0"
updated_at: "2025-01-29T12:00:00Z"
tasks:
- id: "TASK-001"
description: "Implement new feature"
agent: "claude"
status: "in_progress"
priority: "high"
files:
- "src/feature.py"
- "tests/test_feature.py"
created_at: "2025-01-29T09:00:00Z"
claimed_at: "2025-01-29T09:30:00Z"
expires_at: "2025-01-29T13:30:00Z"
- id: "TASK-002"
description: "Write API documentation"
agent: "gemini"
status: "pending"
priority: "medium"
files:
- "docs/api.md"
created_at: "2025-01-29T10:00:00Z"
3.2 Task Status Flow
pending → in_progress → completed
↓
abandoned (if expired)
↓
blocked (if dependency)
3.3 Claiming Process
- Check availability: Verify task is
pending - Set identity: Ensure
SEO_AGENT_AUTHORis set - Claim task: Update tasks.yaml with your agent name
- Acquire locks: Lock files you'll modify
- Begin work: Start implementation
- Complete task: Mark as
completed, release locks
3.4 Task Expiration
- Default timeout: 4 hours from
claimed_at - Expired tasks revert to
pending - Other agents can reclaim expired tasks
4. Environment Configuration
4.1 Required Environment Variable
# Set in shell profile or .envrc
export SEO_AGENT_AUTHOR=<agent_name>
# Valid values:
# - claude
# - gemini
# - codex
# - human
4.2 Verification
# Check current agent identity
echo $SEO_AGENT_AUTHOR
# Verify setup
python tools/check-ownership.py --verify-setup
5. Conflict Resolution
5.1 Resolution Hierarchy
| Conflict Type | Resolution |
|---|---|
| Ownership dispute | Claude decides |
| Lock conflict | First to lock wins; Claude can override |
| Task overlap | Split tasks or assign to single agent |
| Merge conflict | Claude resolves |
5.2 Escalation Process
- Identify conflict: Agent detects violation
- Document issue: Add to escalation log
- Notify Claude: Include conflict details
- Claude decides: Makes binding decision
- Update rules: Modify GUARDRAILS.md if pattern emerges
5.3 Claude Override
Claude can override any lock or ownership rule:
# In locks.yaml
- path: "src/critical/"
agent: "claude"
lock_type: "override"
task_id: "EMERGENCY-001"
reason: "Critical bug fix"
override_agent: "gemini" # Agent whose lock was overridden
6. Verification Tools
6.1 check-ownership.py Commands
# Verify files before commit
python tools/check-ownership.py path/to/file.py
# Check commit message format
python tools/check-ownership.py --check-commit-msg
# Verify setup
python tools/check-ownership.py --verify-setup
# List expired locks/tasks
python tools/check-ownership.py --list-expired
# Validate state files
python tools/check-ownership.py --validate-state
# Strict mode (warnings as errors)
python tools/check-ownership.py --strict path/to/file.py
6.2 Pre-commit Integration
The following hooks run automatically:
| Hook | Stage | Purpose |
|---|---|---|
check-ownership |
commit | Verify file ownership |
check-commit-message |
commit-msg | Validate message format |
7. CI/CD Integration
7.1 GitHub Actions
Ownership checks run on PRs:
# .github/workflows/ownership-check.yml
- Check changed files against ownership matrix
- Post violations as PR comments
- Block merge on violations
7.2 PR Labels
| Label | Meaning |
|---|---|
ownership-verified |
All files verified |
ownership-override |
Claude approved override |
ownership-violation |
Needs resolution |
8. Quick Reference
Commands
# Set identity
export SEO_AGENT_AUTHOR=claude
# Check ownership
python tools/check-ownership.py src/file.py
# List expired
python tools/check-ownership.py --list-expired
# Validate state
python tools/check-ownership.py --validate-state
Commit Format
[Agent] type(scope): description
[Claude] feat(core): implement new feature
[Gemini] docs(api): update API documentation
[Codex] test(models): add model tests
File Locations
| File | Purpose |
|---|---|
.agent-state/tasks.yaml |
Task registry |
.agent-state/locks.yaml |
Lock registry |
tools/check-ownership.py |
Verification script |
This document defines the enforcement rules for multi-agent collaboration. Claude Code is the authoritative source for conflict resolution.
Last updated: [DATE]