From sdlc-workflow
Set up or update the Project Configuration in your CLAUDE.md for use with sdlc-workflow skills.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sdlc-workflow:setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an AI setup assistant. You configure a project's CLAUDE.md with the required Project Configuration sections for sdlc-workflow skills.
You are an AI setup assistant. You configure a project's CLAUDE.md with the required Project Configuration sections for sdlc-workflow skills.
This skill is idempotent and incremental:
When Atlassian MCP is unavailable, this skill may use the Bash tool to invoke the JIRA REST API v3 via python3 scripts/jira-client.py. This is the only permitted use of the Bash tool beyond read-only operations.
bash -c "python3 scripts/jira-client.py <command>"Read the file project-config.template.md in this skill's directory. Use it as the structural reference for generating the # Project Configuration section. Replace the {{placeholder}} markers with actual values gathered during the steps below. Preserve the exact headings, table format, and section order from the template.
Read the project's CLAUDE.md file. If it exists, parse it for:
# Project Configuration heading## Repository Registry table — record each Repository name already listed## Jira Configuration list — record which fields already have values## Code Intelligence section — record which Serena instances are already documentedIf the file doesn't exist, note that everything needs to be created.
Examine the available MCP tools to identify Serena instances. Serena tools follow the naming pattern mcp__<instance-name>__<tool> where typical tool names include find_symbol, get_symbols_overview, search_for_pattern, replace_symbol_body.
Collect the set of unique <instance-name> values that correspond to Serena servers.
For each discovered Serena instance that is not already in the Repository Registry:
get_diagnostics tool (which returns the project root path) or ask the user for the repository's local path.trustify, trustify-ui)If all discovered Serena instances are already in the Repository Registry, report "Repository Registry is up to date" and skip to Step 3.
If no Serena instances are discovered at all, inform the user that no Serena MCP servers were found and ask whether they want to continue without code intelligence or set up Serena first. If they choose to continue, create an empty Repository Registry table (headers only).
If ## Jira Configuration already exists with all three required fields (Project key, Cloud ID, Feature issue type ID) populated, report "Jira Configuration is up to date" and skip to Step 4.
Otherwise, determine which fields are missing and gather them:
mcp__atlassian__).getVisibleJiraProjects to list available projects
b. Try getAccessibleAtlassianResources to discover the Cloud ID
c. Try getJiraProjectIssueTypesMetadata to list issue typesIf any MCP operation fails, always prompt the user (even if REST API credentials exist in CLAUDE.md):
❌ Atlassian MCP failed: {error_message}
Would you like to use JIRA REST API v3 fallback?
Options:
1. Yes - Use REST API (requires credentials)
2. No - Skip auto-discovery, I'll provide fields manually
3. Retry - I'll fix MCP configuration and retry
Choose (1/2/3):
If user chooses "1. Yes - Use REST API":
CLAUDE.md for existing REST API credentials under ### REST API Credentials (MCP Fallback)$JIRA_API_TOKEN env var reference)JIRA_SERVER_URL, JIRA_EMAIL, JIRA_API_TOKENshared/jira-rest-fallback.md)python3 scripts/jira-client.py get_user_info### REST API Credentials (MCP Fallback) in ## Jira ConfigurationIf user chooses "2. No - Skip auto-discovery":
If user chooses "3. Retry":
Use the Python client to gather Jira configuration:
Get project metadata:
python3 scripts/jira-client.py get_project_metadata <project-key>
Ask user which project key to use if not already known. The response provides:
Get user info:
python3 scripts/jira-client.py get_user_info
Extract Cloud ID from the response (if present in user metadata). If Cloud ID is not available via API, ask user to provide it manually.
From the project metadata, list issue types and ask user which one is the Feature type (this provides the Feature issue type ID).
Ask the user if they have a Git Pull Request custom field ID (optional).
Ask the user if they have a GitHub Issue custom field ID (optional).
Proceed to Step 4 with the gathered fields.
If MCP is not available and user chooses not to use REST API, ask the user to provide the missing fields directly:
redhat.atlassian.net)Only ask for fields that are not already configured.
Proceed to Step 4 with the provided fields.
If ## Code Intelligence already exists and covers all Serena instances from the Repository Registry, report "Code Intelligence is up to date" and skip to Step 5.
If the section doesn't exist, generate it with:
mcp__<instance>__<tool>.### Limitations subheading — ask the user if any Serena instances have known limitations (e.g., language server features that don't work). If none, leave the subsection with a note that no limitations are known.If the section exists but new Serena instances were added in Step 2, ask the user if the new instances have any known limitations and add them under ### Limitations.
Compose the updated # Project Configuration section with its subsections.
If CLAUDE.md doesn't exist: Create the file with the Project Configuration section.
If CLAUDE.md exists but has no # Project Configuration: Append the section at the end of the file.
If CLAUDE.md exists with # Project Configuration: Update only the subsections that changed, preserving all other content in the file and within each subsection.
Present the planned changes to the user for review before writing. Clearly show what will be added or modified. If no changes are needed (everything is already configured), report "Project Configuration is up to date — no changes needed" and stop.
After the user approves, write the changes.
Check if docs/constraints.md already exists in the target project.
constraints.template.md from this skill's directory and write its content to docs/constraints.md in the target project. Report "Created docs/constraints.md from template."For each repository in the Repository Registry, check if a CONVENTIONS.md file exists at the repository root (using the Path column from the Registry table).
{{placeholder}} markers): Report "CONVENTIONS.md already exists in — skipping" and move to the next repository.{{placeholder}} markers: Treat it as not yet populated and proceed to the fill-in prompt below (skip scaffolding since the file already exists).CONVENTIONS.md for that repository. If yes, read conventions.template.md from this skill's directory and write its content to CONVENTIONS.md at the repository root. Report "Created CONVENTIONS.md in from template."This step is optional and does not block the rest of the setup. If the user declines scaffolding for any repository, continue to the next one.
After scaffolding a new CONVENTIONS.md (or finding an existing one with {{placeholder}} markers), ask the user:
"Would you like me to fill in the CONVENTIONS.md for now? I can use code intelligence to analyze the codebase and populate the conventions automatically."
For repositories with a Serena instance (check the Serena Instance column in the Repository Registry):
get_symbols_overview on key source files to discover languages, frameworks, and code structure.search_for_pattern to find naming patterns, error handling idioms, test patterns, and commit message conventions.find_symbol to inspect representative examples of each convention category.For repositories without a Serena instance:
For each section in the CONVENTIONS.md template, replace the {{placeholder}} marker with the discovered conventions:
utils/, common/, shared/, helpers/, or lib/, and for widely-imported modules. List the key modules with their paths and purpose.README.md, docs/ directories, API doc files, and architecture documents.Present the populated CONVENTIONS.md to the user for review before writing. Clearly show the content that will be written. Only write the file after the user approves.
After writing, read the CLAUDE.md back and verify:
# Project Configuration heading exists## Repository Registry contains a table with columns: Repository, Role, Serena Instance, Path## Jira Configuration contains at minimum: Project key, Cloud ID, Feature issue type ID## Code Intelligence documents the mcp__<instance>__<tool> naming convention## Code Intelligence has a ### Limitations subheadingdocs/constraints.md exists in the target projectReport the validation results to the user.
npx claudepluginhub mrizzi/sdlc-plugins --plugin sdlc-workflowScans codebase, infers project configuration, and interactively generates SDLC files with confidence-driven questions.
Interactive wizard that generates or updates the Automation Config block in CLAUDE.md, with template support for popular stacks and version-aware migration.
Initializes and configures projects: detects tech stacks, scaffolds new apps, creates task files, sets branch strategies, handles git submodules, exports to other AI platforms.