
tikalk/agentic-sdlc-team-ai-directives
Deployment & DevOpsA forkable foundation for version-controlled AI agent behavior.
Overview
A forkable foundation for version-controlled AI agent behavior. — this repository implements Factor XI: Directives as Code, treating all AI instructions as version-controlled assets. - — the methodology (strategic mindset, structured planning, directives as code, traceability) - — the version-controlled team knowledge base (constitution, personas, rules, skills, CDRs) - — the Spec-Driven Development toolkit; consumes this knowledge base via the bundled team-ai-directives extension - — agent skills that implement the methodology; consume this knowledge base via team-* skills See GETTING_STARTED.md for a 5-minute setup guide. This knowledge base is consumed in two ways at runtime — pick the one that matches your project setup. Fork and clone for authoring and customization.
README
Team AI Directives Starter Kit
A forkable foundation for version-controlled AI agent behavior.
Built on the Twelve-Factor Agentic SDLC — this repository implements Factor XI: Directives as Code, treating all AI instructions as version-controlled assets.
How the pieces fit:
- 12-Factor Agentic SDLC — the methodology (strategic mindset, structured planning, directives as code, traceability)
- This repo — the version-controlled team knowledge base (constitution, personas, rules, skills, CDRs)
- agentic-sdlc-spec-kit — the Spec-Driven Development toolkit; consumes this knowledge base via the bundled
team-ai-directivesextension - adlc-team-skills — agent skills that implement the methodology; consume this knowledge base via
team-*skills
Quick Start: See GETTING_STARTED.md for a 5-minute setup guide.
Installation
This knowledge base is consumed in two ways at runtime — pick the one that matches your project setup. Fork and clone for authoring and customization.
Option 1: Spec Kit Projects
For projects managed with the Agentic SDLC Spec Kit, install via the specify CLI using the --team-ai-directives flag:
# Initialize project with team-ai-directives
specify init --team-ai-directives https://github.com/your-org/team-ai-directives.git
The Specify CLI installs the bundled team-ai-directives extension (governance commands and skills) and copies this repository’s default domain skills into the agent’s skills directory. Context modules are referenced through the agent-context extension.
# Or from a specific release tag
specify init --team-ai-directives https://github.com/your-org/team-ai-directives/archive/refs/tags/v1.3.0.zip
Option 2: Any Skills-Capable Agent
For agents that support the Agent Skills standard (Claude Code, Codex, OpenCode, Cursor, Gemini, and others), install the governance and architecture skills from adlc-team-skills:
# One command: install skills + configure team-ai-directives (runs /team-setup interactively)
npx adlc-cli team setup tikalk/adlc-team-skills -a opencode
# Or install skills only, then invoke /team-setup in your agent
npx skills add tikalk/adlc-team-skills
adlc-cli team setup installs the skills, generates slash commands, wires lifecycle events, and runs the /team-setup skill via agent run to clone, point at, or scaffold this knowledge base. The skills locate it via .adlc/init-options.json or the ADLC_TEAM_AI_DIRECTIVES environment variable.
Option 3: Authoring (Fork and Clone)
Fork this repository and clone it locally to customize the knowledge base itself:
git clone https://github.com/your-org/team-ai-directives.git
cd team-ai-directives
Then reference it in your project initialization or configuration.
Ongoing maintenance with adlc-cli:
adlc-cli team update # git pull this repo + skills update + confidence update
adlc-cli team repair # full repair via agent run (reindex, conflicts, freshness)
adlc-cli team repair --update-confidence # deterministic confidence aggregation (no agent)
Who This Is For
- Engineering teams wanting consistent AI agent behavior
- Platform teams building developer self-service with AI
- Consultancies creating reusable AI patterns across clients
- Organizations adopting the Agentic SDLC methodology
What’s Included
This repository provides the building blocks for teaching AI agents how your team works:
- Constitution - Core principles that govern all AI behavior
- Personas - Role-specific guidance (DevOps, Java, Python, Data, Platform)
- Rules - Domain-specific patterns (security, testing, style guides)
- Skills - Self-contained capabilities with trigger-based activation
Repository Layout
team-ai-directives/
├── AGENTS.md # Instructions for AI agents on how to use this repo
├── README.md # This file (for humans)
├── GETTING_STARTED.md # Quick start guide
├── CONTRIBUTING.md # Contribution guidelines
├── CHANGELOG.md # Version history
├── CDR.md # Context Directive Records (approved contributions)
├── .mcp.json # MCP server configuration
├── .skills.json # Skills registry and policy
├── context_modules/ # The knowledge library
│ ├── constitution.md # Core principles
│ ├── personas/ # Role-specific guidance
│ ├── rules/ # Domain-specific patterns
│ │ ├── style_guides/
│ │ ├── security/
│ │ └── testing/
│ └── examples/ # Code examples and prompt templates
│ ├── testing/
│ └── prompts/
└── skills/ # Self-contained agent capabilities
└── {skill-name}/
├── SKILL.md # Main instructions with YAML frontmatter
├── references/ # Supporting content
└── scripts/ # Automation (optional)
File Format
All directives (rules, personas, examples, skills) published via LevelUp include YAML frontmatter for memory management:
---
id: rule-python-error-handling
cdr_ref: CDR-2026-001
created: 2026-04-15
modified: 2026-05-18
verified: 2026-05-18
age_days: 33
evidence:
- commit: abc123
file: src/error_handler.py
---
Frontmatter Fields
| Field | Description | Example |
|---|---|---|
id |
Unique identifier | rule-python-error-handling |
cdr_ref |
Source CDR reference | CDR-2026-001 |
created |
Original publication date | 2026-04-15 |
modified |
Last edit date | 2026-05-18 |
verified |
Last verification date | 2026-05-18 |
age_days |
Days since creation | 33 |
evidence |
List of supporting commits/files | YAML list |
Freshness Warning
Published directives include a verification banner:
> ⚠️ **Memory Verification**
> This directive is 33 days old. Before applying:
> - [ ] Pattern still exists in current codebase
> - [ ] Rule is actively followed by team
> - [ ] No conflicting rules introduced
Verification Workflow
- Scan the knowledge base —
team.validatein spec-kit projects, orteam-repair --freshness/team-repair --conflictsin skills-based projects - Valid directives get their
verifiedtimestamp updated - Stale directives (>30 days) are flagged for review
- Update or deprecate stale directives as needed
See CONTRIBUTING.md for the full verification workflow.
How It Works
- AI agents read
AGENTS.mdfor instructions on using this repo - Constitution provides foundational principles
- Personas provide role-specific guidance with rule references
- Skills are triggered by user requests (matched via
.skills.json) - Rules are accessed through personas, not directly from skills
Two Delivery Mechanisms
The same knowledge base is consumed through two complementary mechanisms:
- Spec Kit extension — governance commands (canonical names
adlc.team-ai-directives.*, invoked via short aliases liketeam.discover). Hooks auto-runteam.discoverbeforespecifyandplan. The knowledge base path is stored in.specify/init-options.json. - Agent Skills (adlc-team-skills) — model-invoked skills following the Agent Skills standard.
team-bootauto-loads the constitution at session start;team-discoverauto-finds relevant context per task. The knowledge base path is resolved from.adlc/init-options.jsonor theADLC_TEAM_AI_DIRECTIVESenvironment variable.
Both mechanisms read the same files — AGENTS.md, CDR.md, .skills.json, and context_modules/ — and can coexist in one project.
Personas
Personas define the role, expertise, preferences, and rule references that shape how an AI agent behaves for a given engineering context. Loading a persona tells the agent who it is for this session — its values, collaboration style, and which domain-specific rules to apply.
How Personas Work
When an agent begins a session, it loads context in this order:
- Constitution (
context_modules/constitution.md) — non-negotiable team principles applied to every interaction. - Persona (
context_modules/personas/*.md) — role-specific defaults, rules, and collaboration style. - Skills (
skills/*/SKILL.md) — on-demand capabilities triggered by the user’s request.
A persona sits between the universal constitution and the task-specific skill. It tells the agent:
- What domain knowledge to prioritize
- Which rule files are relevant to its role
- How to collaborate (communication style, review preferences, workflow assumptions)
- Agent-specific guidance (e.g., always propose infra changes as code)
Personas are passive by default — they don’t activate automatically unless your tooling or prompt instructs the agent to load one. You attach a persona to an agent through your IDE settings, a system prompt, or a prompt prefix.
Persona Folder Structure
All personas live in context_modules/personas/:
context_modules/personas/
├── cloud_native_platform_architect.md
├── data_analyst.md
├── devops_engineer.md
├── senior_java_developer.md
└── senior_python_developer.md
Each persona is a single Markdown file. There is no sub-folder nesting — one file per role.
Persona File Anatomy
A well-formed persona file contains some or all of the following sections:
# Persona: (required)
The heading names the persona. Agents use this as the persona identifier.
# Persona: DevOps Engineer
## Summary (required)
Describes the persona’s motivation, pain points, and success criteria. This is the first context an agent reads to understand its role.
## Summary
- **Motivation**: Enable reliable, scalable, and secure software delivery through automation, IaC, and observability.
- **Pain Points**: Manual deployments, configuration drift, lack of visibility.
- **Success Criteria**: Fully automated CI/CD pipelines, declarative infrastructure, secure secret management.
## Rule References (recommended)
Links the persona to domain-specific rule files using the @rule: syntax. Agents resolve these paths relative to context_modules/rules/.
## Rule References
- CI/CD Pipelines: @rule:devops/github_actions.md
- Secrets Management: @rule:devops/external_secrets_operator.md, @rule:devops/secrets_management_dry.md
- Testing: @rule:testing/python/pytest_patterns.md
## Collaboration Preferences (recommended)
Describes how the persona prefers to work: communication style, review expectations, workflow assumptions, and advocacy positions.
## Collaboration Preferences
- Prefers infrastructure changes reviewed through pull requests with clear descriptions
- Values declarative configurations over imperative scripts
- Expects "everything as code" — infrastructure, configs, and pipelines in version control
## Tool Context (optional)
Lists the tooling ecosystem this persona operates in. Helps agents make appropriate technology choices without asking the user every time.
## Tool Context
- CI: GitHub Actions, GitLab CI
- CD/GitOps: ArgoCD, Flux
- IaC: Terraform, Crossplane
- Secrets: HashiCorp Vault, AWS Secrets Manager
## Guidance for Agents (optional)
Explicit behavioral instructions for agents taking actions on behalf of this persona.
## Guidance for Agents
- Always propose infrastructure changes as code, never manual operations
- When working with secrets, always use secret management services — never hardcode or commit secrets
- Always consider disaster recovery, backup strategies, and rollback procedures
Built-In Personas
| File | Persona | Primary Domain |
|---|---|---|
senior_python_developer.md |
Senior Python Developer | Python, PEP 8, testing, CI/CD |
senior_java_developer.md |
Senior Java Developer | Java, Spring Boot, JUnit 5, Google Style |
devops_engineer.md |
DevOps Engineer | CI/CD, Helm, IaC, secrets management, GitOps |
cloud_native_platform_architect.md |
Cloud-Native Platform Architect | Kubernetes, Crossplane, ArgoCD, platform engineering |
data_analyst.md |
Data Analyst | SQL, dashboards, reproducible reporting, large datasets |
Each built-in persona is self-contained and production-ready. Fork and adjust them to match your team’s specific tooling and standards.
Creating a Custom Persona
-
Create a new file in
context_modules/personas/:touch context_modules/personas/my_role.md -
Add the following template and fill it in:
# Persona: My Role ## Summary - **Motivation**: [What drives this role] - **Pain Points**: [What slows them down] - **Success Criteria**: [What good looks like] ## Rule References - [Domain]: @rule:[domain]/[rule-file].md ## Collaboration Preferences - [How this persona prefers to work] ## Tool Context - [Tools and platforms this persona uses] ## Guidance for Agents - [Behavioral instructions for autonomous actions] -
Reference any applicable rule files from
context_modules/rules/. Browse the available rules:context_modules/rules/ ├── architecture/ ├── data/ ├── devops/ ├── orchestration/ ├── security/ ├── style-guides/ │ ├── java/ │ └── python/ └── testing/ ├── java/ └── python/ -
Attach the persona in your agent configuration.
Using Personas
Option A: IDE Custom Instructions (GitHub Copilot)
In VS Code with GitHub Copilot, add the persona content directly to a .github/copilot-instructions.md file or reference it in your workspace settings:
// .vscode/settings.json
{
"github.copilot.chat.codeGeneration.instructions": [
{ "file": "context_modules/personas/devops_engineer.md" }
]
}
Option B: System Prompt Prefix
Prepend the persona content to your agent’s system prompt:
[Load persona: context_modules/personas/devops_engineer.md]
User request: ...
Option C: Prompt Reference at Session Start
Tell the agent explicitly which persona to adopt at the start of a conversation:
You are acting as the DevOps Engineer persona defined in
context_modules/personas/devops_engineer.md. Load that file
and apply it to all responses in this session.
Personas vs. Skills
| Persona | Skill | |
|---|---|---|
| Purpose | Defines who the agent is | Defines what the agent can do |
| Scope | Entire session | Triggered per task |
| Location | context_modules/personas/ |
skills/*/SKILL.md |
| Activation | Loaded at session start | Loaded on-demand by trigger phrases |
Registered in .skills.json? |
No | Yes |
| Contains rules? | References rules via @rule: |
May embed rules inline |
A persona provides the stable identity and preferences for a session. Skills provide the domain-specific execution instructions for individual tasks. They complement each other and are both loaded alongside the constitution.
Skills
Skills are self-contained, reusable AI agent capabilities. Each skill packages a domain’s instructions, context, and optional automation so an AI agent can reliably apply it on demand without requiring the user to supply background knowledge each time.
How Skills Work
When a user makes a request, an agent:
- Reads
.skills.jsonto discover available skills. - Matches the user’s intent against each skill’s
descriptionand trigger phrases. - Loads the relevant
SKILL.mdto obtain domain-specific instructions. - Optionally loads files from
references/for deeper context. - Applies the skill while completing the task.
Skills are loaded on-demand — only the skills relevant to the current request are activated. Default skills listed in .skills.json are auto-installed into the agent’s skills directory during project init.
Skill Folder Structure
All internal skills live under skills/{skill-name}/:
skills/
└── my-skill/
├── SKILL.md # Required — primary instructions for the agent
├── references/ # Optional — supplementary reference documents
│ ├── guide.md
│ └── patterns.md
└── scripts/ # Optional — automation scripts for the skill
└── setup.sh
SKILL.md
The entry point for every skill. It uses a YAML front matter block to declare metadata, followed by Markdown instructions:
---
name: my-skill
description: >
Short description of the skill's purpose.
Use when [trigger phrases that describe when to activate this skill].
---
# My Skill
## What This Skill Provides
...
## When to Use This Skill
...
## Core Patterns
...
The description field is critical — it tells the agent when to activate the skill. Write it in natural language and include representative phrases a user might say.
The .skills.json Manifest
.skills.json is the single source of truth for skill discovery and policy. It defines which local skills are auto-installed during project init, which external skills are available on demand, and which skills are blocked.
{
"version": "2.0.0",
"source": "team-ai-directives",
"description": "Team skills manifest. The `default` list contains skill names that are auto-installed during project init. The `external` map contains on-demand skills fetched by URL. The `blocked` list contains skills that must never be installed.",
"default": [ ... ],
"external": { ... },
"blocked": [ ... ],
"policy": { ... }
}
Skill Categories in .skills.json
| Category | Meaning |
|---|---|
default |
Local skills (from this repository’s skills/ directory) auto-installed into the agent’s skills directory during project init |
external |
Skills fetched on demand from a URL; not stored locally |
blocked |
Skills explicitly prohibited; the agent must refuse to use them |
Skill Entry Format
Local skills are listed by folder name in the default array:
"default": [
"dbt-template",
"github-actions",
"helm-charts"
]
External skills are keyed by name with metadata pointing to the raw SKILL.md:
"external": {
"react-best-practices": {
"version": "^1.0.0",
"description": "...",
"categories": ["frontend", "react"],
"source": "https://github.com/org/repo",
"url": "https://raw.githubusercontent.com/org/repo/main/skills/skill-name/SKILL.md"
}
}
Configuring Skills
Adding a Local Skill
- Create the skill folder and
SKILL.md(see Creating a New Skill below). - Add the skill’s folder name to the
defaultarray in.skills.json:
"default": [
"dbt-template",
"my-skill"
]
Adding an External Skill
External skills are fetched from a URL at runtime. Add them to the external map:
"external": {
"my-external-skill": {
"version": "^1.0.0",
"description": "Short description with trigger phrases.",
"categories": ["relevant", "tags"],
"source": "https://github.com/org/repo",
"url": "https://raw.githubusercontent.com/org/repo/main/skills/skill-name/SKILL.md"
}
}
Blocking a Skill
To prevent an agent from using a specific skill (e.g., a deprecated or insecure external skill), add it to the blocked list:
"blocked": [
{
"id": "github:unsafe-org/deprecated-skill",
"reason": "Security vulnerability - deprecated by maintainer"
}
]
Creating a New Skill
mkdir -p skills/my-skill/references
Create skills/my-skill/SKILL.md:
---
name: my-skill
description: >
Describe what the skill does. Use when the user asks to [action],
[another action], or [trigger phrase].
---
# My Skill
## What This Skill Provides
Brief overview of the domain knowledge and capabilities this skill covers.
## When to Use This Skill
- Scenario 1
- Scenario 2
## Core Patterns
### Pattern Name
**Rule**: State the rule clearly.
**Implementation**:
- Step or detail
- Step or detail
**References**: See references/guide.md
Then register it in .skills.json.
Using Skills as an Agent
When processing a request, an agent resolves skills in this order:
- Constitution —
context_modules/constitution.md(always loaded). - Persona — relevant file from
context_modules/personas/based on task context. - Skill — triggered by matching the user’s intent to a skill description.
To activate a skill manually, tell the agent which skill to use:
“Using the
github-actionsskill, create a reusable workflow for deploying to Kubernetes.”
The agent will read skills/github-actions/SKILL.md and any referenced rule files before responding.
How Personas and Skills Work Together
A persona and one or more skills are loaded at the same time. They complement rather than duplicate each other.
For example, a DevOps Engineer session might look like:
- Constitution — foundational team principles always apply
- Persona:
devops_engineer.md— sets the role identity, collaboration preferences, and tool context - Skill:
github-actions— activated when the user asks about CI/CD pipelines - Skill:
helm-charts— activated when the user asks about packaging for Kubernetes
The persona tells the agent who it is. The skills tell it how to execute specific tasks.
External Skills
External skills are fetched at runtime from their url field in .skills.json. They are not stored locally in this repository.
To discover external skills, ask your AI agent:
“What skills are available in the external registry?”
The agent will read .skills.json, list the external entries, and describe when each is useful. To use one, the agent fetches the SKILL.md from the provided url.
Policy Settings
The policy section of .skills.json controls agent behavior:
"policy": {
"auto_install_default": true,
"enforce_blocked": true,
"allow_project_override": true
}
| Setting | Default | Description |
|---|---|---|
auto_install_default |
true |
Skills in the default list are automatically installed during project init |
enforce_blocked |
true |
The agent refuses to use any skill in the blocked list |
allow_project_override |
true |
Individual projects can override manifest settings locally |
Governance Commands and Skills
Governance capabilities are available through both delivery mechanisms — as spec-kit commands from the bundled team-ai-directives extension (installed by specify init --team-ai-directives ) and as agent skills from adlc-team-skills:
| Capability | Spec Kit command | Agent Skill | Purpose |
|---|---|---|---|
| Bootstrap session | team.boot |
team-boot (auto) |
Load the constitution and orient the agent before any task |
| Discover context | team.discover |
team-discover (auto) |
Find relevant personas, rules, examples, and skills for the current task |
| Set up knowledge base | specify init --team-ai-directives |
team-setup |
Clone, point at, or scaffold the knowledge base |
| Repair | team.repair |
team-repair |
Re-index CDR.md, .skills.json, and AGENTS.md; health check; conflict scan; freshness verification |
| Manage skills | team.skills |
team-skills |
Browse and install team skills from the knowledge base |
| Verify health | team.verify |
team-repair --health-only |
Verify knowledge base config, skills registry, CDR tracking, and constitution alignment |
| Curate CDRs | — | team-init / team-learn |
Propose Context Directive Records from a codebase or completed feature |
| Review CDRs | — | team-learn |
Accept, reject, or defer proposed CDRs |
| Publish CDRs | team.evolve |
team-learn |
Compile accepted CDRs into knowledge base artifacts and a draft PR |
| Validate | team.validate |
team-repair --conflicts / --freshness |
Scan for rule conflicts and update verification timestamps |
Naming conventions: spec-kit commands are canonically named adlc.team-ai-directives.* and are invoked via the short aliases shown above (team.discover, team.init). Agent skills use dash-names (team-discover, team-init) and are model-invoked through the Agent Skills standard.
Integration
In spec-kit projects, the agent-context extension injects team-directives awareness into the project’s context file during specify init. It prompts the agent to invoke team.discover before feature work and to inherit the team constitution when updating project principles. Run verification anytime by invoking the team.verify command.
In skills-based projects, team-boot performs the equivalent role — loading the constitution at session start and chaining into team-discover. Run health checks anytime with the team-repair skill.
Versioning
Use git tags (v1.0.0, v2.0.0, etc.) to manage breaking changes. Downstream consumers can pin to specific versions.
Customization
Fork this repository and customize:
- Constitution - Add your team’s principles
- Personas - Define roles matching your team
- Rules - Add domain-specific patterns
- Skills - Create capabilities for your workflows
.mcp.json- Configure your MCP servers.skills.json- Register your skills
Contributing
See CONTRIBUTING.md for guidelines. All changes require pull request review.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add tikalk/agentic-sdlc-team-ai-directives