nvidia/create-spike
Investigate a plain-language problem description by deeply exploring the codebase, then create a structured GitHub issue with technical findings. Prequel to build-from-issue — maps vague ideas to concrete, buildable issues. Trigger keywords - spike, investigate, explore, research issue, technical investigation, create spike, new spike, feasibility, codebase exploration.
npx skills add https://github.com/NVIDIA/OpenShell --skill create-spike
Investigate a problem, map it to the codebase, and produce a structured GitHub issue ready for human disposition and roadmap placement.
A spike is an exploratory investigation. The user has a vague idea — a feature they want, a bug they've noticed, a performance concern — but hasn't mapped it to code, assessed feasibility, or structured it as a buildable issue. This skill does that mapping.
gh CLI must be authenticated (gh auth status)User describes a problem
│
├─ Step 1: Gather the problem statement
│ └─ Ask ONE round of clarifying questions if genuinely needed
│
├─ Step 2: Deep codebase investigation via principal-engineer-reviewer
│ └─ Map the problem to code, assess feasibility, identify risks
│
├─ Step 3: Determine labels from the repo
│
├─ Step 4: Create a GitHub issue with structured findings
│
└─ Step 5: Report to user with issue URL and next steps
The user provides a problem description. This could be:
Extract from the user's input:
If the problem is too vague to determine which area of the codebase to investigate, ask ONE round of clarifying questions. Do not over-interrogate. Examples of when to ask:
Examples of when NOT to ask:
This is the core of the skill. Use the Task tool with the principal-engineer-reviewer sub-agent to perform a thorough codebase investigation.
Task tool with subagent_type="principal-engineer-reviewer"
The prompt to the reviewer must instruct it to:
architecture/ directory for relevant documentation about the affected subsystems.10. Assess gateway config documentation impact. If the change would add, remove, rename, or change defaults for gateway TOML keys or driver-specific config options, call out that docs/reference/gateway-config.mdx must be updated. If the change is surfaced through Helm or compute-driver setup docs, call out the relevant deployment or compute-driver docs too.
11. Assess Linux Security Module (LSM) impact. If the change involves process identity, /proc filesystem access, file labeling, binary execution, or inter-process visibility, call out whether it will behave differently on hosts running SELinux (enforcing) or AppArmor. For example: reading /proc/<pid>/exe across an SELinux domain boundary returns ENOENT, not EACCES. Tests that fork+exec into system binaries (different SELinux label) will fail on enforcing hosts. Flag any LSM-sensitive code paths and recommend mitigations.
12. Determine the issue type: feat, fix, refactor, chore, perf, or docs.
Include in the prompt to the reviewer:
The reviewer will return a detailed analysis. You'll use this to populate the issue body (Step 4). The issue should contain both the stakeholder-readable summary and the full technical investigation — everything in one place.
Fetch the available labels from the repository:
gh label list --limit 100
Based on the investigation results, select appropriate labels:
area:sandbox, area:proxy, area:policy, area:cli)state:validated only when the evidence is sufficient for human disposition — the spike established a coherent problem or proposal and completed the factual assessment needed for a human yes/no decisionstate:needs-info instead when material evidence is missing — identify the exact evidence, reproduction details, or decision input still needed in the issue bodystate:accepted, an agent:* label, or the roadmap label — acceptance, roadmap placement, and requests for agent work require a human decisionCreate the issue with a structured body containing both the stakeholder-readable summary and the full technical investigation. The title should follow conventional commit format.
gh issue create \
--title "<type>: <concise description of the problem/feature>" \
--label "<area:component>" --label "<state:validated|state:needs-info>" \
--body "$(cat <<'EOF'
## Problem Statement
<What and why — refined from the user's description. 2-4 sentences. Written for stakeholders, not just engineers.>
## Technical Context
<What the investigation found about the current architecture in the affected area. How things work today and why a change is needed.>
## Affected Components
| Component | Key Files | Role |
|-----------|-----------|------|
| <component> | `<file1>`, `<file2>` | <what this component does in the context of this change> |
| ... | ... | ... |
## Technical Investigation
### Architecture Overview
<How the affected subsystems work today. Include data flow, component interactions, and relevant design decisions. Reference architecture docs if applicable.>
### Code References
| Location | Description |
|----------|-------------|
| `<file>:<line>` | <what this code does and why it's relevant> |
| `<file>:<line>` | <what this code does and why it's relevant> |
| ... | ... |
### Current Behavior
<What happens today in the code paths that would change. Be specific — name functions, trace the flow.>
### What Would Need to Change
<Detailed breakdown of modifications needed, organized by component. Include specific functions and structs, but stop short of writing an implementation plan — that's `build-from-issue`'s job.>
### Alternative Approaches Considered
<If the investigation surfaced multiple viable approaches, describe them and note trade-offs. Flag which decisions need human input.>
### Patterns to Follow
<Existing patterns in the codebase that the implementation should be consistent with. Reference specific examples.>
## Proposed Approach
<High-level strategy — NOT a full implementation plan. That's `build-from-issue`'s job. Describe the direction, not the steps. 3-6 sentences.>
## Scope Assessment
- **Complexity:** <Low / Medium / High>
- **Confidence:** <High — clear path / Medium — some unknowns / Low — needs discussion>
- **Estimated files to change:** <count>
- **Issue type:** `<feat|fix|refactor|chore|perf|docs>`
## Risks & Open Questions
- <risk or unknown that needs human judgment>
- <design decision that could go either way>
- ...
## Disposition Readiness
- **State:** `<state:validated|state:needs-info>`
- **Assessment:** <why the available evidence is or is not sufficient for a human accept/decline decision>
- **Missing evidence:** <specific evidence still needed, or "None">
## Test Considerations
- <what testing strategy makes sense for this change>
- <which test levels are needed: unit, integration, e2e>
- <any test infrastructure that may need to be added>
- <what tests exist for the affected area today, what patterns should be followed, any test infrastructure gaps>
---
*Created by spike investigation. `state:validated` means the issue is ready for human disposition; `state:needs-info` means specific evidence is still required. A human applies `state:accepted` if OpenShell should pursue the work and places it on the roadmap separately. To queue unattended agent planning, a human applies `agent:plan-requested`; a direct request to an agent does not require that label.*
EOF
)"
Do NOT post a follow-up comment on the issue. All findings must be contained in the issue body itself.
Display the issue URL so it's easily clickable:
Created issue [#<number>](https://github.com/OWNER/REPO/issues/<number>)
After creating the issue, report:
For state:validated:
> Review the issue and decide whether OpenShell should pursue it. If yes, replace state:validated with state:accepted and separately associate it with a roadmap item. The work may remain human-owned. Apply agent:plan-requested to queue planning for an unattended agent, or directly ask an agent to use build-from-issue. If no, close it as not planned and record the rationale.
For state:needs-info:
> Collect the missing evidence identified in the issue. Leave it off the roadmap. Once the evidence is sufficient, replace state:needs-info with state:validated for human disposition.
build-from-issue's responsibility, created after human review of the spike.build-from-issue work. When build-from-issue runs, it reads the issue body as input context. The technical investigation section should contain enough detail that its principal-engineer-reviewer can build on the investigation rather than starting from scratch.build-from-issue. Mention it as the natural next step in the issue body footer.state:validated only when the investigation supports a human accept/decline decision. Otherwise apply state:needs-info, state what is missing, and leave the issue off the roadmap.| Command | Description |
| --- | --- |
| gh issue create --title "..." --body "..." --label "..." | Create a new issue |
| gh label list --limit 100 | List available labels in the repo |
| gh issue edit <id> --add-label "..." | Add labels to an issue |
| gh issue view <id> --json number,title,body,state,labels | Fetch issue metadata |
User says: "Allow sandbox egress to private IP space via networking policy"
principal-engineer-reviewer to investigate:is_internal_ip() SSRF check in proxy.rs that blocks RFC 1918 addressesopa.rs and crates/openshell-sandbox/data/sandbox-policy.regosandbox.proto for NetworkEndpointarchitecture/security-policy.md and architecture/sandbox.mdarea:sandbox, area:proxy, area:policy, state:validatedfeat: allow sandbox egress to private IP space via networking policy — body includes both the summary and full investigation (code references, architecture context, alternative approaches)User says: "The proxy retry logic seems too aggressive — I'm seeing cascading failures under load"
principal-engineer-reviewer:area:proxy, state:validatedfix: proxy retry logic causes cascading failures under load — body includes both the summary and full investigation (retry code references, current behavior trace, comparison to standard backoff patterns)User says: "Policy evaluation is getting slow — can we cache compiled OPA policies?"
principal-engineer-reviewer:area:policy, state:validatedperf: cache compiled OPA policies to reduce evaluation latency — body includes both the summary and full investigation (compilation hot path, per-request overhead, cache invalidation strategies with trade-offs)Take nvidia/create-spike from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.