npx skills add ...
npx skills add nvidia/openshell --skill 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 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)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.
The prompt to the reviewer must instruct it to:
Identify which components/subsystems are involved. Don't just guess from names — read the code to confirm.
Read the relevant source files thoroughly. Not just grep for keywords — actually read and understand the logic. Follow the call chain from entry point through to the relevant behavior.
Map the current architecture for the affected area. How do the components interact? What's the data flow? Where are the boundaries?
Identify the exact code paths that would need to change. Provide file paths and line numbers. Name the functions, structs, and modules.
Assess feasibility and complexity:
Identify risks, edge cases, and design decisions that need human input. What could go wrong? What trade-offs exist? What decisions shouldn't be made by an agent?
Check for existing patterns in the codebase that should be followed. If there's a convention for how similar features are implemented, note it. The implementation should be consistent.
Look at relevant tests to understand test coverage expectations. What test patterns exist? What level of coverage is expected for this area?
Check architecture docs in the architecture/ directory for relevant documentation about the affected subsystems.
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.
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.
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:
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.
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:
After creating the issue, report:
For state:validated:
Review the issue and decide whether OpenShell should pursue it. If yes, apply
state:accepted, associate it with a roadmap item, or do both. Either action records acceptance; roadmap placement additionally records sequencing. The work may remain human-owned. Applyagent:plan-requestedto queue planning for an unattended agent, or directly ask an agent to usebuild-from-issue; on a direct request, the agent warns about missing expected workflow labels and continues without changing them. 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-infowithstate:validatedfor human disposition.
Everything goes in the issue body. Do NOT post follow-up comments. The issue body should contain both the stakeholder-readable summary and the full technical investigation, all in one place.
Do NOT create an implementation plan. The spike identifies the problem space and proposes a direction. The implementation plan is build-from-issue's responsibility, created after human review of the spike.
One round of clarification max. Don't turn this into an interrogation. If the user provides enough to identify the area of the codebase, start investigating.
The issue should save 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.
Cross-reference build-from-issue. Mention it as the natural next step in the issue body footer.
Treat validation as an evidence threshold, not an automatic spike outcome. Apply 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)