Creating Profiles

July 9, 2026 · View on GitHub

When to Create a New Profile

When detect-profile.sh doesn't recognize your project type, it offers to create a new profile. You can also create profiles manually.

YAML Format

name: my-profile
description: One-line description of the project type
inherits: _base    # Always inherit from _base

rules:             # Additional rules beyond _base
  - version-bump
  - changelog-update

hooks:             # Additional hooks beyond _base
  - pre-commit-checks
  - branch-safety

discovery_questions:   # Optional — asked during init
  - key: my_question
    question: "What framework do you use?"
    examples: "Express, Django, Rails"

suggests:              # Optional — default config values
  sourceExtensions: [".py", ".js"]
  changelogFile: "CHANGELOG.md"
  protectedBranches: ["main"]

Profile Inheritance

All profiles inherit from _base.yml, which provides:

  • 10 universal rules (evaluate, plan, test-per-bugfix, test-strategy, naming-conventions, context, session, superpowers, verify-after-complete, plan-closure)
  • 12 universal hooks (session-start, compliance-reinforce, config-guard, enforce-evaluate, enforce-superpowers, stop-checklist, session-end, marker-tracker, marker-guard, enforce-plan-tracking, enforce-context7, verification-gate)

Your profile adds project-type-specific rules and hooks on top.

Contributing Profiles

After creating a profile that could help others:

bash ~/.claude-dev-framework/scripts/push-up.sh .claude/project/profiles/my-profile.yml --global