From sprint-coding-agent
Resolves the Sprint agent configuration by reading .sprint-agent.json and applying a 5-level resolution order: per-invocation override > directory mapping > auto-detection > config defaults > plugin defaults. Enforces governance constraints including guardrails prerequisite check and org policy endpoint (fail-closed) before any sprint planning action begins.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sprint-coding-agent:config-resolverThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Resolves the active configuration for the Sprint coding agent by layering multiple sources in a defined precedence order and enforcing governance constraints before any planning action begins.
Resolves the active configuration for the Sprint coding agent by layering multiple sources in a defined precedence order and enforcing governance constraints before any planning action begins.
Before any other check, inspect the workspace root for .guardrails-agent.json.
If .guardrails-agent.json exists:
guardrailsActive: truesprint-guardrails adapter skillIf .guardrails-agent.json does not exist:
ERROR: guardrails-coding-agent is required but not installed.
Install it: claude plugin install @Vensure-Devops-QA/guardrails-coding-agent
Then run: /guardrails-db-init
After the guardrails check, verify the sprint-jira module is installed by checking for the presence of the sprint-jira plugin directory (any of: sprint/sprint-jira, or a sprint-jira entry in the local plugin registry).
If sprint-jira is not detected:
sprintJiraAvailable: false in the outputIf sprint-jira is detected:
sprintJiraAvailable: true in the outputAfter the sprint-jira check, verify the sprint-ado module is installed by checking for the presence of the sprint-ado plugin directory (any of: sprint/sprint-ado, or a sprint-ado entry in the local plugin registry).
If sprint-ado is not detected:
sprintAdoAvailable: false in the outputIf sprint-ado is detected:
sprintAdoAvailable: true in the outputAfter both module checks, determine which connector is active by inspecting the resolved config:
| Config state | activeConnector |
|---|---|
ado block present | "ado" |
jira block present, no ado | "jira" |
Both jira and ado blocks present | "ado" — emit warning: "Both jira and ado blocks found in .sprint-agent.json — ado takes precedence." |
| Neither block present | null — halt immediately: "No connector configured. Add a jira or ado block to .sprint-agent.json and run /sprint-init." |
Read .sprint-agent.json from the workspace root if it exists. This file is optional at the filesystem level but its absence means most fields fall back to plugin defaults. Parse as JSON and surface a clear error if the file is present but malformed.
The file is typically created by the /sprint-init command.
Apply the following five-level priority chain. Higher levels fully override lower levels for the same key. Merge objects at the same key rather than replacing them.
@config blocks)directoryMapping entries in .sprint-agent.json matched against the current working pathJIRA_BASE_URL, JIRA_API_TOKEN, JIRA_EMAIL) present in the process environment.sprint-agent.jsonWhen no higher-priority source specifies a value, check the process environment:
| Env Var | Resolved Field |
|---|---|
JIRA_BASE_URL | jira.baseUrl |
JIRA_EMAIL | Passed to jira-connector |
JIRA_API_TOKEN | Passed to jira-connector |
ADO_ORG_URL | ado.orgUrl |
ADO_PAT | Passed to ado-connector at runtime |
After resolving config, enforce:
If governance.approvedDomainAgents is set, verify each agent name against the approved list before routing. If a ticket would be routed to an unapproved agent, include a warning in the plan output rather than halting.
If governance.orgPolicyEndpoint is configured, fetch org policy at session start (called once by the SessionStart hook, cached for the session):
Request:
GET {orgPolicyEndpoint}
Authorization: Bearer {orgPolicyToken}
X-Plugin-Name: sprint-coding-agent
X-Plugin-Version: 1.0.0
orgPolicyToken substitution: The value "${ORG_POLICY_TOKEN}" in .sprint-agent.json is a placeholder. At runtime, config-resolver reads the literal string, detects the ${...} pattern, and substitutes the value from the process environment (ORG_POLICY_TOKEN). If the env var is unset, the token is omitted from the request header.
Response handling:
| Condition | Behaviour |
|---|---|
| Timeout > 5s or HTTP 5xx | Fail-closed — halt with: "Cannot reach org policy endpoint. Contact your admin." |
| HTTP 4xx | Warn and proceed |
HTTP 200 + "allowed": false | Halt with the reason from the response body, or "Sprint planning blocked by org policy." if reason is null |
HTTP 200 + "allowed": true | Merge returned overrides over local config (org wins on conflict) |
Response schema:
{
"allowed": true,
"reason": null,
"overrides": {
"approvedDomainAgents": ["backend-coding-agent", "frontend-coding-agent"]
}
}
Emit the resolved configuration as structured data before proceeding:
{
"jira": {
"baseUrl": "https://your-org.atlassian.net",
"boardId": 42,
"projectKey": "PROJ"
},
"ado": null,
"labelMappings": { "backend": [...], "frontend": [...], "database": [...], "devops": [...], "security": [...] },
"outputDir": ".",
"governance": {
"approvedDomainAgents": [...],
"orgPolicyEndpoint": "<url-or-null>",
"guardrailsActive": true
},
"sprintJiraAvailable": true,
"sprintAdoAvailable": false,
"activeConnector": "jira",
"resolutionSource": {
"jira.baseUrl": "config-defaults",
"jira.boardId": "config-defaults",
"labelMappings": "config-defaults",
"activeConnector": "config-defaults"
}
}
resolutionSource records which level provided each value, for transparency and debugging.
npx claudepluginhub gagandeepp/software-agent-teams --plugin sprint-coding-agentGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.