Diablo_ClaudeMD_Ricing_example/skills/ccpm/references/conventions.md
diablo 50fa79407d
Some checks are pending
CI — CoM Config Validation / Validate JSON Configs (push) Waiting to run
CI — CoM Config Validation / Validate YAML Configs (push) Waiting to run
CI — CoM Config Validation / Lint Shell Scripts (push) Waiting to run
CI — CoM Config Validation / Secret Detection (push) Waiting to run
CI — CoM Config Validation / Lint Markdown (push) Waiting to run
CI — CoM Config Validation / Validate CODEOWNERS (push) Waiting to run
CoM Claude Command Center — sanitized public configuration
Public, sanitized mirror of an AI orchestration command center: agents, skills,
MCP servers, slash-command workflows. All infrastructure identifiers, hostnames,
mesh IPs/subnets, repo paths, maintainer identity, and hardware fleet specifics
scrubbed to <placeholders>; session debug logs and host-specific memory removed.
No live credentials. Verified clean by automated leak sweep. See SANITIZATION.md.

churchofmalware.org . authorized research only
2026-06-10 02:02:03 -04:00

4.4 KiB

Conventions — File Formats, Paths & Rules

Read this before doing any file operations across all phases.


Directory Structure

.claude/
├── prds/
│   └── <feature-name>.md          # Product requirement documents
├── epics/
│   ├── <feature-name>/
│   │   ├── epic.md                # Technical epic
│   │   ├── <N>.md                 # Task files (named by GitHub issue number after sync)
│   │   ├── <N>-analysis.md        # Parallel work stream analysis
│   │   ├── github-mapping.md      # Issue number → URL mapping
│   │   ├── execution-status.md    # Active agents tracker
│   │   └── updates/
│   │       └── <issue_N>/
│   │           ├── stream-A.md    # Per-agent progress
│   │           ├── progress.md    # Overall issue progress
│   │           └── execution.md  # Execution state
│   └── archived/
│       └── <feature-name>/        # Completed epics
└── context/                       # Project context docs (separate system)

Frontmatter Schemas

PRD (.claude/prds/.md)

---
name: <feature-name>        # kebab-case, matches filename
description: <one-liner>    # used in lists and summaries
status: backlog | active | completed
created: <ISO 8601>         # date -u +"%Y-%m-%dT%H:%M:%SZ"
---

Epic (.claude/epics//epic.md)

---
name: <feature-name>
status: backlog | in-progress | completed
created: <ISO 8601>
updated: <ISO 8601>
progress: 0%                # recalculated when tasks close
prd: .claude/prds/<name>.md
github: https://github.com/<owner>/<repo>/issues/<N>  # set on sync
---

Task (.claude/epics//.md)

---
name: <Task Title>
status: open | in-progress | closed
created: <ISO 8601>
updated: <ISO 8601>
github: https://github.com/<owner>/<repo>/issues/<N>  # set on sync
depends_on: []              # issue numbers this must wait for
parallel: true              # can run concurrently with non-conflicting tasks
conflicts_with: []          # issue numbers that touch the same files
---

Progress (.claude/epics//updates//progress.md)

---
issue: <N>
started: <ISO 8601>
last_sync: <ISO 8601>
completion: 0%
---

Datetime Rule

Always get real current datetime from the system — never use placeholder text:

date -u +"%Y-%m-%dT%H:%M:%SZ"

Frontmatter Update Pattern

When updating a single frontmatter field in an existing file:

sed -i.bak "/^<field>:/c\\<field>: <value>" <file>
rm <file>.bak

When stripping frontmatter to get body content for GitHub:

sed '1,/^---$/d; 1,/^---$/d' <file> > /tmp/body.md

GitHub Operations

Repository Safety Check (run before any write operation)

remote_url=$(git remote get-url origin 2>/dev/null || echo "")
if [[ "$remote_url" == *"automazeio/ccpm"* ]]; then
  echo "❌ Cannot write to the CCPM template repository."
  echo "Update remote: git remote set-url origin https://github.com/YOUR/REPO.git"
  exit 1
fi
REPO=$(echo "$remote_url" | sed 's|.*github.com[:/]||' | sed 's|\.git$||')

Authentication

Don't pre-check authentication. Run the gh command and handle failure:

gh <command> || echo "❌ GitHub CLI failed. Run: gh auth login"

Getting Issue Numbers

# From a task file's github field:
grep 'github:' <file> | grep -oE '[0-9]+$'

Git / Worktree Conventions

  • One branch per epic: epic/<name>
  • Worktrees live at ../epic-<name>/ (sibling to project root)
  • Always start branches from an up-to-date main:
    git checkout main && git pull origin main
    git worktree add ../epic-<name> -b epic/<name>
    
  • Commit format inside epics: Issue #<N>: <description>
  • Never use --force in any git operation

Naming Conventions

  • Feature names: kebab-case, lowercase, letters/numbers/hyphens, starts with a letter
  • Task files before sync: 001.md, 002.md, ... (sequential)
  • Task files after sync: renamed to GitHub issue number (e.g., 1234.md)
  • Labels applied on sync: epic, epic:<name>, feature (for epics); task, epic:<name> (for tasks)

Epic Progress Calculation

total=$(ls .claude/epics/<name>/[0-9]*.md 2>/dev/null | wc -l)
closed=$(grep -l '^status: closed' .claude/epics/<name>/[0-9]*.md 2>/dev/null | wc -l)
progress=$((closed * 100 / total))

Update epic frontmatter when any task closes.