Methodology profiles - vixygrey/truenorth-mcp GitHub Wiki

Methodology profiles

A methodology profile declares the project workflow shape: the grouping vocabulary, whether grouping is required, the branch pattern, and whether a commit needs an id reference. The profiles are fixed data, so a custom profile cannot be defined (ADR-0009).

The five profiles

Profile Grouping Grouping rule Requires an id
issue-per-task ticket optional yes
epic-based epic required yes
milestone-based milestone required yes
kanban none optional no
generic none optional no

issue-per-task is the default. An absent .agent/profile.yml resolves to it.

Select the profile

.agent/profile.yml names the active profile:

profile: issue-per-task

The runtime reads the name once at startup. An unknown name returns an error that names the value and the five valid names, and makes no partial change.

The profile names are the v1 profile contract. See Compatibility before upgrading an existing workspace.

The grouping key

A task carries a neutral grouping key, not a mandatory epic id. truenorth_record_task takes an optional group_id with an optional group_kind (epic, sprint, milestone, or ticket). A legacy epic_id still maps to a group with group_kind set to epic.

Whether the grouping key is required depends on the active profile. epic-based and milestone-based require it. issue-per-task, kanban, and generic accept a task without it.

Priority and estimation policies

Profiles define workflow shape, not prioritization or estimation. WSJF and BCP are optional policies. Apply either only when project conventions, an existing artifact, or the user explicitly selects it. Otherwise preserve dependency or declared order and omit WSJF and BCP fields.

Shared instructions use task, work item, and group. User-facing output may use the active profile's grouping word. Do not invent an epic, milestone, ticket, or story when the profile does not require one.

Scaffold a profile

truenorth_scaffold_project takes a profile name and seeds the .agent/ tree, the git hooks, and the .github/ issue templates for that profile. An absent name uses issue-per-task. The issue templates carry a grouping field only when the profile groups by epic or milestone, and omit the id field when the profile requires no id.

See The lifecycle for recording and advancing work under a profile.