Skip to content
Back to skills

Configure

BSecurity

Use this skill when the user runs /configure, /configure --needs, or /configure --check. Also auto-invoked by env-detect.sh on fresh install (Layer 0) and by skills that find required config missing at runtime (Layer 2). Guides setup of config/tools.json and config/tools.local.json through a question bank; handles public/local split, diff-before-write, and resume semantics for interrupted commands.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
toolsgobashgitsecurity

Works with

  • claude code
  • mcp

Security analysis

B88/100
  • criticalPipes output to a shell interpreter

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add lantisprime/claude-sdlc --skill configure --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Configure?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Configure
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/lantisprime-configure/badge)](https://www.skillsdirectory.com/skills/lantisprime-configure)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: configure
description: Use this skill when the user runs /configure, /configure --needs, or /configure --check. Also auto-invoked by env-detect.sh on fresh install (Layer 0) and by skills that find required config missing at runtime (Layer 2). Guides setup of config/tools.json and config/tools.local.json through a question bank; handles public/local split, diff-before-write, and resume semantics for interrupted commands.
config_requirements: []
next_suggestions:
  - when: no_active_work
    suggest: "run /start to begin a new task, or /plan if you already know what to build"
  - when: plan_drafted_and_unsigned
    suggest: "run /status to see your in-flight task"
  - when: always
    suggest: "run /status to see current state, or /start to begin a task"
---

# Configure — Guided Setup

Replace manual `config/tools.json` editing with a conversational wizard. Power users can still edit files by hand — this is an on-ramp, not a replacement.

## Before starting: check env.json flags

Read `.claude/sdlc/env.json` if it exists.

- If `config_corrupted: true` → skip the normal wizard; go to **Layer 3: rebuild** below.
- If `layer_0_pending: true` → this is a fresh install; run the full wizard and offer `/start` on completion.
- Otherwise → run normally.

## Invocation modes

**Full wizard** (`/configure` with no flags): ask all applicable questions.

**Scoped mode** (`/configure --needs tracker.type,tracker.host`): ask only the questions that map to the specified keys. Skip everything else. On completion, resume the original command that triggered this invocation.

**Dry-run** (`/configure --check`): read `config/tools.json` and `config/tools.local.json`, validate against the schema in `config/tools.example.json`, print a report of what is set, what is null/missing, and what would be asked. No prompts, no writes. Exit when done.

## Context-aware defaults

Before asking any question, inspect the environment to pre-select the most likely answer:

| Signal | Pre-selected default |
|---|---|
| `.github/` directory present | GitHub Issues |
| `git remote -v` contains `github.com` | GitHub Issues |
| `.linear.yml` present or `linear` on PATH | Linear |
| `jira` on PATH or `atlassian` in git remote | Jira |

User can always override; the default is a keystroke save, not a lock-in.

## Question bank (8 questions maximum)

Ask one at a time. Do not front-load.

**Q1 — Tracker type**
> Which issue tracker does this project use?
> A) GitHub Issues  B) GitLab Issues  C) Jira  D) Linear  E) None
> (pre-selected: \<detected default or "None">)

**Q2 — Auth token** *(only if Q1 ≠ None)*
> Paste your \<tracker> auth token. (Stored in `config/tools.local.json` — never committed.)
> Skip with Enter to omit; the plugin will accept any URL without host validation.

**Q3 — Tracker project** *(only if Q1 ≠ None)*
> Project key, repo slug, or team ID in \<tracker>?
> (e.g. `MY-PROJECT`, `owner/repo`, `eng-team-id`)

**Q4 — Multi-team sign-off**
> Will this project require sign-off from multiple roles before advancing phases? (Y/n)
> **If n: skip Q5–Q8 and finish.**

**Q5 — Role vocabulary** *(only if Q4 = Y)*
> Which sign-off roles does this project use?
> A) Suggested 9-role set: security, product, compliance, sre, legal, privacy, architecture, qa, ba
> B) Custom — enter a comma-separated list
> (No per-role email assignments here — signer identity lives in each sign-off file.)

**Q6 — Sync transport** *(only if Q4 = Y)*
> How should sign-off files be shared across machines?
> A) None — all signers commit directly to this repo
> B) Network share — a shared folder path
> C) Central git repo — a separate git repo URL
> D) MCP connector — a connector loaded in your Claude Code session
> E) Defer — decide later

**Q7 — Share path, repo URL, or connector name** *(only if Q6 = B, C, or D)*
> Enter the \<network share path | central git repo URL | MCP connector name>:
> *(For MCP: connector contract is deferred — RFC §3.7. Enter a placeholder name now or choose E to decide later.)*

**Q8 — Session sign-off hints** *(only if Q4 = Y)*
> Show personalized sign-off hints at session start? (Y/n — default Y)
> (Matches your git email against historical sign-offs to surface pending signatures.)

## Writing config

Before writing any file, show a diff:

```
Proposed changes to config/tools.json:
+ "tracker": { "type": "github", "host": "github.com", "project": "owner/repo" }
+ "approvals": { "roles": ["security", "product"], "share_path": null, "git_repo": null }

Write these changes? [Y/n]
```

On confirm:

1. Write non-secret keys to `config/tools.json`. If it doesn't exist, create it from `config/tools.example.json` as base.
2. Write secret keys (auth token) to `config/tools.local.json`.
3. If `config/tools.local.json` was written and `.gitignore` does not already exclude it, append `config/tools.local.json` to `.gitignore`.
4. Print: `Config saved. Run /configure --check to verify.`

On cancel: print "No changes written." and return.

## Layer 0 completion

After a successful full-wizard run when `layer_0_pending` was true in `env.json`:

> Setup complete. Start a task now? [Y/n]

If Y: invoke the `start` skill.
If N: print "Run /start or /plan when ready." and stop.

## Layer 2 resume

After a successful scoped run (`--needs`), print:

> Config saved. Resuming \<original command>…

Then re-invoke the original skill or command that triggered this invocation, with the new config in scope.

If the user cancels scoped configure, print:

> Cannot proceed without `<key>`. \<original command> aborted.

## Layer 3: rebuild

When `config_corrupted: true` in `env.json` (or when `config/tools.json` fails to parse):

> `config/tools.json` is not valid JSON. Options:
> A) Rebuild from scratch — backs up current file to `config/tools.json.bak` and runs the full wizard
> B) Open the file path for manual repair: `config/tools.json`
> C) Cancel

On A: copy `config/tools.json` to `config/tools.json.bak`, delete `config/tools.json`, then run the full wizard.

## Graceful degradation

- No git repo → skip context-aware defaults; still run the wizard.
- `config/tools.example.json` absent → use hardcoded question bank; do not block.
- Write fails (permissions) → surface the error verbatim; do not retry silently.

## What this skill must NOT do

- Do not write config without showing a diff and getting explicit confirmation.
- Do not store auth tokens in `config/tools.json` — always route secrets to `tools.local.json`.
- Do not ask more than 8 questions in a single wizard run.
- Do not auto-advance phases or run skills other than `start` (Layer 0 completion).

## Config key reference

| Question | Key | File |
|---|---|---|
| Q1 tracker type | `tracker.type` | `tools.json` |
| Q2 auth token | `tracker.auth_token` | `tools.local.json` |
| Q3 project | `tracker.project` | `tools.json` |
| Q5 roles | `approvals.roles` | `tools.json` |
| Q6+Q7 network share | `approvals.share_path` | `tools.json` |
| Q6+Q7 central git | `approvals.git_repo` | `tools.json` |
| Q6+Q7 MCP connector | `approvals.mcp.connector` | `tools.json` |
| Q8 hints | `display.session_signoff_hints` | `tools.json` |

## References

- `config/tools.example.json` — full schema reference
- `docs/rfcs/guided-entry-session-resume-multi-role.md` §8 — PR 8 spec and four-layer model
- `docs/rfcs/multi-team-approval.md` §3.1, §3.6 — why identity stays in sign-off files, not config

## Next step hint

**Layer 2 exception:** When this skill completes via Layer 2 scoped-run and resumes the original command, skip this step entirely — the resumed command's output is the next step.

For standalone `/configure` runs (full wizard or `--check`), pipe the `next_suggestions` conditions to `skills/_shared/next-hint.sh` and print any output:

```bash
printf '%s\n' \
  'no_active_work|run /start to begin a new task, or /plan if you already know what to build' \
  'plan_drafted_and_unsigned|run /status to see your in-flight task' \
  'always|run /status to see current state, or /start to begin a task' \
  | bash skills/_shared/next-hint.sh
```

Print any output verbatim. If the script outputs nothing, add nothing.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.