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)Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
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.