Bootstrap config
Auto-generate or update the skills-config.yaml file for the current workspace. Scans repos, resolves PM tool and Slack IDs, asks structured questions for gaps. Use when the user says "bootstrap config", "setup skills config", "update skills config", "initialize workspace", or when any other skill detects that skills-config.yaml is missing.From its SKILL.md
npx -y skills add vecten/sdlc-toolkit --skill bootstrap-configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `for d in */; do [ -d "$d/.git" ] && echo "$d"; done` and 1 more.
SKILL.md
8.0 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Bootstrap Config
Generate or update the skills-config.yaml that all sdlc-toolkit skills depend on. The config lives at <workspace>/.cursor/skills-config.yaml.
Guardrails
- Never overwrite user-edited values without explicit confirmation.
- When updating an existing config, only fill
nullor missing fields. - Always validate repo paths exist on disk before writing them.
- Always confirm the final config with the user before writing.
Workflow
Step 1 — Check for existing config
Look for skills-config.yaml in the workspace .cursor/ directory.
- If found, read it and enter update mode (Step 6).
- If not found, enter create mode (Step 2).
Also read the example config from references/skills-config-example.yaml in this plugin to understand the full schema.
Step 2 — Ask about tool integrations
Ask the user which external tools the project uses:
- PM tool: Linear (default), Jira, or Shortcut?
- Knowledge base: Notion (default) or Confluence?
- Error tracking: Sentry (default)?
Write the answers to the top-level pm_tool, knowledge_base_tool, and error_tracking_tool keys. These keys tell skills which MCP tools to call and how to phrase instructions. Currently only Linear, Notion, and Sentry have full skill support — if the user picks an unsupported tool, note that the skill behavior may be limited.
Step 3 — Scan for repositories
Scan the workspace root for directories containing .git/:
for d in */; do [ -d "$d/.git" ] && echo "$d"; done
For each git directory:
- Resolve remote URL:
git -C "$d" remote get-url origin - Extract GitHub org from the remote URL.
- Detect the current branch as a candidate dev branch.
- Look for common release target branches:
production,prod,main,master.
Build the repos and git.branches sections from this data.
Step 4 — Query the PM tool
If pm_tool is linear, use Linear MCP tools to populate the linear section:
list_teams— present teams and ask user to pick the default.list_projects— for the selected team, present projects and ask user to pick defaults.list_issue_labels— for the selected team, present labels and ask user to select which should be available for ticket creation.- Ask for the ticket prefix (e.g.,
EXC,PROJ) — this is used in commit messages and ticket extraction regex. - Ask for default priority (1=Urgent, 2=High, 3=Medium, 4=Low).
Cache all resolved IDs.
If pm_tool is jira, use Atlassian MCP tools to populate the jira section:
getAccessibleAtlassianResources— present available Atlassian sites and ask user to confirm the instance URL.getVisibleJiraProjects— for the selected site, present projects and ask user to pick the default project key.- Ask for default priority (e.g., "Medium", "High").
- Ask for any custom input (board URL, workflow-specific statuses, custom fields).
Step 5 — Query Slack
Use Slack MCP tools to populate the slack section:
- Ask user for the PR review channel name.
- Ask user for the release notification channel name (can be the same).
- Ask user for reviewer names (comma-separated list).
- For each reviewer name, call
slack_search_usersand cache the Slack user ID. - Ask whether to enable
notify_on_prandnotify_on_release(default: both true). - Ask user for the analysis notification channel name (can be the same as review/release). This is used by
analyse-taskfor posting analysis summaries. - Ask user for the security news channel name (e.g.
#security-news). Resolve its ID withslack_search_channelsand cache asslack.channels.security_news_id. This is the source channel fortriage-security. - Ask user for the security draft channel (where
triage-securityposts its response draft). Default to the same channel assecurity_newsso replies thread on the original advisory; the user can override if drafts should land in a separate channel.
Step 6 — Collect remaining sections
Ask structured questions for:
Testing:
- Runner preference: Docker, host, or CI-only?
- Prefer Makefile targets? (yes/no)
- Any per-repo custom test/lint/migration commands? (free text ->
custom_input)
Notion:
- Priority board status options (default: On Track, Planned, At Risk, Blocked, Done)
- Any custom input?
Release email:
- Enabled? (yes/no)
- Greeting text (default: "Hi,")
- Sign-off text (default: "Best regards")
- Any custom input? (system names, recipients, subject pattern ->
custom_input)
Git:
- Confirm branch prefixes (default: feature/, bugfix/, hotfix/)
- Commit prefix pattern (default:
<TICKET_ID>: <message>) - Any custom git conventions? (free text ->
custom_input)
Security (used by triage-security):
draft_only: always draft the Slack response instead of sending (default:true).scanners.auto_scan: run the bundled scanner scripts (osv-scanner, trivy, npm audit, pip-audit, snyk) before manual grep (default:true— scripts skip silently when CLIs are missing, so this is safe to leave on).scanners.enabled: keep"auto"(run every installed scanner) or pick a subset like["osv", "trivy", "installed-pip"]. Theinstalled-*entries audit actual venv/node_modules contents to catch lockfile drift.scanners.severity: minimum severity threshold for noisy scanners (default:"high").- Any custom input? (vendors explicitly not in use, escalation contacts, standard wording.)
Do not ask for a stack list or a repos_to_scan subset — the skill always scans every repo in repos and detects the stack from manifests at runtime.
Timeline (optional — skip if the user does not use manage-timeline):
- Developer count (default: 1)
- Scheduling mode: sequential, parallel, or custom? (default: sequential)
- Which projects are ongoing and should never be auto-dated?
- Execution order of remaining projects
- Any parallel groups?
- Any projects that should have no target date?
For each section, present sensible defaults and ask for confirmation.
Step 7 — Update mode (existing config)
When a config already exists:
- Read the current config.
- Re-scan repos: detect any new git directories not in config, flag removed ones.
- For any field that is
null, attempt to resolve it:linear.team_id,linear.default_project_id, label IDs -> query Linear.slack.reviewers[].slack_id-> query Slack.notion.priorities_database_id-> skip (resolved by manage-priorities at runtime).
- Present a diff of proposed changes to the user.
- Write only after user confirms.
Never change fields that already have non-null values unless the user explicitly asks.
Step 8 — Write the config
Write the final YAML to <workspace>/.cursor/skills-config.yaml.
After writing, also update the commit-message rule if a rule template exists:
- Look for
.cursor/rules/commit-message-task-id-prefix.mdc. - Replace
{{TICKET_PREFIX}}with the configuredlinear.ticket_prefix. - If the rule file doesn't exist, skip this step.
Step 9 — Validate
After writing:
- Re-read the file and confirm it parses correctly.
- Validate all repo paths exist.
- Report summary: what was created/updated, any unresolved fields.
Output format
Config written to `.cursor/skills-config.yaml`.
- Tools: pm=<pm_tool>, kb=<knowledge_base_tool>, errors=<error_tracking_tool>
- Repos: <count> configured (<list>)
- PM: team=<name>, project=<name>, <count> labels, prefix=<prefix>
- Slack: channel=<channel>, <count> reviewers with IDs resolved
- Testing: runner=<runner>, makefile=<yes/no>
- Knowledge base: <count> statuses configured
- Release email: <enabled/disabled>
- Unresolved: <list of null fields, if any>
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most project setup skills give in ~1.9k tokens
Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06
- Write the configuration filein 36 of 1553
- Create the directory structurein 35 of 1553, across 33 files
- Verify the setupin 31 of 1553, across 28 files
- Run the setup scriptin 30 of 1553, across 29 files
- Pre-determine the required sample sizein 29 of 1553, across 12 files
- Check if the configuration already existsin 29 of 1553
- Document every testin 26 of 1553, across 10 files
- Start with a hypothesisin 26 of 1553, across 11 files
- Ask one question at a timein 22 of 1553
- Test a single variable per testin 21 of 1553, across 9 files
- Read product marketing context before asking questionsin 19 of 1553, across 8 files
- Do not peek and stop earlyin 18 of 1553, across 7 files
Said here and by no other author read
- Only fill null or missing fields when updating an existing config.
- Validate repo paths exist on disk before writing them.
- Re-read the file and confirm it parses correctly after writing.
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.