Guide OAK engineering constitution creation with decision-driven requirements,
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: constitution-authoring
description: Guide OAK engineering constitution creation with decision-driven requirements,
requirement language patterns, and reality-grounded standards.
---
# Constitution Authoring Expertise
Guide the creation of effective engineering constitutions that balance aspirational standards with project reality.
## OAK Constitution Workflow
```
/oak.constitution-create → Analyze & Gather Decisions → Generate → /oak.constitution-validate
```
### CLI Commands
| Command | Purpose |
|---------|---------|
| `oak constitution create` | Generate constitution from decisions |
| `oak constitution analyze --json` | Analyze project structure and capabilities |
| `oak constitution validate --json` | Validate structure and quality |
| `oak constitution list-agent-files` | List synced agent instruction files |
### File Structure
```
oak/
├── constitution.md # Main engineering constitution
└── agent-instructions/ # Per-agent instruction files (synced)
├── CLAUDE.md
└── ...
```
## Decision-Driven Constitution Creation
Constitutions should be **decision-driven**, not template-filled. Each section should reflect explicit decisions about project standards.
### Core Decision Points
#### 1. Testing Strategy
Choose based on project maturity, team size, and risk tolerance:
| Strategy | Coverage | TDD | E2E | Best For |
|----------|----------|-----|-----|----------|
| **Comprehensive** | High (80%+) | Required | Required | Critical systems, regulated industries |
| **Balanced** | Moderate (60-80%) | Encouraged | Recommended | Most production applications |
| **Pragmatic** | Flexible | Optional | Optional | MVPs, prototypes, rapid iteration |
**Decision questions**:
- What's the cost of a bug in production?
- How often does the team refactor?
- Is there existing test infrastructure?
#### 2. Architectural Pattern
Choose based on domain complexity and team experience:
| Pattern | Complexity | Coupling | Best For |
|---------|------------|----------|----------|
| **Clean Architecture** | High | Very Low | Complex domains, long-lived systems |
| **Vertical Slice** | Medium | Low | Feature-focused teams, rapid delivery |
| **Modular Monolith** | Medium | Medium | Future microservices candidates |
| **Layered** | Low | Medium | Traditional enterprise apps |
| **Pragmatic** | Adaptive | Varies | Mixed complexity, smaller teams |
**Decision questions**:
- How complex is the business domain?
- Will the team grow significantly?
- Is eventual microservices extraction needed?
#### 3. Documentation Level
Choose based on team turnover and system complexity:
| Level | Public APIs | Internal | ADRs | Best For |
|-------|-------------|----------|------|----------|
| **Extensive** | All documented | All documented | Required | High turnover, complex systems |
| **Standard** | All documented | Complex only | Recommended | Most teams |
| **Minimal** | Critical only | None | Optional | Small stable teams, simple systems |
**Decision questions**:
- How often do new engineers join?
- How complex is the domain?
- Is this a long-term system?
#### 4. Code Review Policy
Choose based on team trust and risk tolerance:
| Policy | Reviews | Approvals | Direct Commits | Best For |
|--------|---------|-----------|----------------|----------|
| **Strict** | All PRs | 1-2 required | Never allowed | Regulated, critical systems |
| **Standard** | All PRs | 1 required | Hotfixes only | Most production teams |
| **Flexible** | Recommended | Optional | Simple changes | High-trust small teams |
**Decision questions**:
- What's the team's experience level?
- Are there compliance requirements?
- How fast must fixes be deployed?
#### 5. CI/CD Enforcement
Choose based on infrastructure maturity:
| Level | Quality Gates | Coverage Check | Deploy Blocking |
|-------|---------------|----------------|-----------------|
| **Full** | All must pass | Enforced | Yes |
| **Standard** | Most must pass | Advisory | Most |
| **Basic** | Advisory | No | No |
## Requirement Language (RFC 2119)
Use precise requirement keywords to indicate obligation levels:
| Keyword | Meaning | Use When |
|---------|---------|----------|
| **MUST** | Absolute requirement | Violation is unacceptable |
| **MUST NOT** | Absolute prohibition | Action is never acceptable |
| **SHOULD** | Strong recommendation | Exceptions need justification |
| **SHOULD NOT** | Strong discouragement | Only in unusual cases |
| **MAY** | Optional | Team discretion |
### Language Patterns
**Strong requirement (MUST)**:
```markdown
- All public APIs MUST be documented
- Tests MUST be deterministic and repeatable
- Security patches MUST be applied within 2 weeks
```
**Recommendation (SHOULD)**:
```markdown
- Complex logic SHOULD include inline comments
- Code reviews SHOULD be completed within 24 hours
- Integration tests SHOULD cover critical paths
```
**Optional (MAY)**:
```markdown
- Teams MAY use pair programming for complex features
- Documentation MAY include diagrams
- E2E tests MAY be skipped for internal tools
```
### Avoid Weak Language
| Instead of | Use |
|------------|-----|
| "should try to" | "SHOULD" |
| "ideally" | "SHOULD" or remove |
| "if possible" | "MAY" or remove |
| "we want to" | "MUST" or "SHOULD" |
| "best practice" | Specific requirement |
## Reality Alignment
Constitution requirements must be achievable, not aspirational fantasies.
### Reality Check Questions
Before adding a requirement, ask:
1. **Current State**: Does the project already do this? If not, what's needed?
2. **Enforcement**: Can this be checked automatically? If not, how is it verified?
3. **Exceptions**: When is it acceptable to deviate? Document the exception process.
4. **Timeline**: If aspirational, when will it be achievable?
### Handling Gaps
When a requirement doesn't match reality:
| Situation | Approach |
|-----------|----------|
| **Nearly there** | Use MUST, add implementation plan |
| **Significant gap** | Use SHOULD with timeline |
| **Aspirational** | Use "Future Requirement" section |
| **Unrealistic** | Don't include it |
**Example: Coverage Gap**
If constitution wants 80% coverage but project has 45%:
```markdown
### Coverage Requirements
**Target:** 80% code coverage for new code
**Current State:** Project-wide coverage is 45%. New code MUST meet 80% target.
Existing code coverage will be increased incrementally per the Coverage Roadmap.
**Enforcement:** Coverage checks run in CI. New code below 80% will be flagged
but not blocked until Q2 2025.
```
## Section Writing Guide
### Principles Section
**Goal**: Define core values that guide all other decisions.
**Include**:
- Code quality philosophy
- Testing philosophy
- Documentation philosophy
**Each principle needs**:
- Clear requirements (MUST/SHOULD/MAY)
- Rationale explaining why
### Architecture Section
**Goal**: Document the chosen architectural pattern and its implications.
**Include**:
- Pattern name and description
- Core principles of the pattern
- Specific requirements for following the pattern
- Rationale for choosing this pattern
### Testing Section
**Goal**: Define the testing strategy with measurable requirements.
**Include**:
- Testing philosophy (comprehensive/balanced/pragmatic)
- Unit test requirements
- Integration test requirements (if applicable)
- E2E test requirements (if applicable)
- Coverage requirements with enforcement level
### Governance Section
**Goal**: Define how the constitution itself is maintained.
**Include**:
- Code review policy
- Amendment process
- Versioning approach
- Review cadence
## Quality Checklist
Before finalizing a constitution:
- [ ] **All decisions documented**: Each section reflects an explicit decision, not a default
- [ ] **Reality-aligned**: Requirements match current capabilities or have timelines
- [ ] **Measurable**: Requirements can be verified (automated or manual)
- [ ] **Consistent**: No contradictions between sections
- [ ] **RFC 2119 language**: MUST/SHOULD/MAY used consistently
- [ ] **Rationale provided**: Each requirement explains "why"
- [ ] **No template tokens**: All `{{placeholders}}` replaced
- [ ] **Metadata complete**: Version, author, date all present
## Common Pitfalls
| Pitfall | How to Fix |
|---------|------------|
| Aspirational MUSTs | Downgrade to SHOULD or add timeline |
| Missing rationale | Add "Rationale:" explaining why |
| Vague requirements | Add specific measurable criteria |
| Copy-pasted templates | Customize to actual project decisions |
| Over-prescription | Use SHOULD instead of MUST for non-critical items |
| No enforcement path | Add how requirement will be verified |
No comments yet. Be the first to comment!