Instructions#
-
Check you're in the right repo first - This app consumes shared UI from the
@robosystems/corenpm package and talks to the RoboSystems API. Before filing here, decide where the work actually lands:- A bug in a shared component (layout, forms, chat, auth forms, graph wizard, contexts, task monitoring) belongs in
RoboFinSystems/robosystems-core— fixing it here would be patched over on the next version bump. - A bug in API behavior, data, or an endpoint contract belongs in
RoboFinSystems/robosystems. - What belongs here: pages and routes under
src/app/, app-local components,src/lib/, the API routes insrc/app/api/, CloudFormation, and the workflows.
If it's cross-repo (an app change blocked on an API or core change), file it here and link the other issue rather than splitting the description.
- A bug in a shared component (layout, forms, chat, auth forms, graph wizard, contexts, task monitoring) belongs in
-
Determine Issue Type - Based on the user's description, pick one:
- Bug: Defects or unexpected behavior
- Task: Specific, bounded work items that can be completed in one PR
- Feature: Request a new capability (no design required)
- RFC: Propose a design for discussion before implementation
- Spec: Approved implementation plan ready for execution
Confirm what this repo actually offers before assuming —
ls .github/ISSUE_TEMPLATE/for the templates andgh issue create --helpfor whether--typeis supported. -
Gather Context - If the user provides a file path or references existing code:
- Read the relevant files to understand the current implementation
- Check related configuration files
- Review any referenced documentation
-
Draft the Issue - Read the matching YAML template in
.github/ISSUE_TEMPLATE/and mirror its structure. Each template declares its owntype:in frontmatter and marks which fields are required — read the file rather than guessing the sections. Fill the optional fields too where you have the information; they're the ones that make an issue actionable later.Note
gh issue create --title/--bodybypasses templates entirely — nothing prefills and nothing validates. That's exactly why the body has to be hand-matched to the template structure.For a UI bug, the reproduction should name the route (e.g.
/graphs/[graphId]/tables), the viewport if it's responsive-specific, and the color scheme if it's dark-mode-specific. Those three are the details most often missing and most often the whole bug. -
Sanitize for Public Visibility - This repo is public and the issue is world-readable immediately. Before creating:
- Remove any internal pricing, margins, or cost details
- Remove specific customer names, graph IDs, or account data — screenshots and pasted console output are the usual leak; check them for session tokens, API keys, and email addresses
- Generalize any sensitive business metrics
- For anything security-adjacent, keep the text terse and non-actionable — no exploit mechanics, no affected-route enumerations, no payloads. Detailed root-cause belongs in private notes, referenced by filename only; for coordinated disclosure use a private GitHub Security Advisory, never a public issue.
- Keep ordinary technical implementation details (these are fine to share)
-
Create the Issue - One command, with the type set inline:
gh issue create \ --type <Bug|Task|Feature|RFC|Spec> \ --title "<clear, concise title>" \ --body-file /tmp/issue-body.md \ --label "<labels>"No prefixes like
[SPEC]in the title — the type handles categorization. Write the body to a file rather than inlining it, to avoid shell-escaping problems.To change the type on an existing issue:
gh issue edit <n> --type <Type>(or--remove-type).
Labels#
Issue types handle primary categorization; labels carry the metadata. Always enumerate what actually exists rather than working from memory — and raise the limit, since the default truncates at 30:
gh label list --limit 100The families to expect in this repo:
area:*— the primary routing dimension. This repo's set is frontend-shaped and finer-grained than the service repo's:components,pages,api(the Next API routes and server actions, not the RoboSystems API),auth,styling,a11y,ux,mobile,performance,testing,ci-cd,infra. Always apply one. This is the most commonly forgotten label and the most useful.priority:*— when to do it. Note the ladder iscritical/high/low— there is nopriority:medium.size:*— rough effort:small(< 1 day),medium(1–3 days),large(> 3 days).- Status —
blocked,needs-review.
The stock GitHub labels (bug, enhancement, documentation, question, …) still exist but are redundant with issue types — prefer the type plus an area:*.
Questions vs issues#
.github/ISSUE_TEMPLATE/config.yml disables blank issues and routes open-ended questions to the org's GitHub Discussions. gh issue create bypasses that chooser entirely, so apply the intent yourself: if the user's input is a question or a discussion starter rather than actionable work, say so and suggest a Discussion instead of filing it.
Example Usage#
User: "The graph selector doesn't collapse on mobile"
Response: Let me check where that component lives first...
[Grep for the component — if it resolves into @robosystems/core, say so and file in robosystems-core instead]
[Read bug.yml and draft a body matching its structure, naming the route and viewport]
[Create with gh issue create --type Bug --label area:mobile,size:small]
Output Format#
After creating the issue, provide:
- The issue URL
- Brief summary of what was created
- Issue type and labels applied
- Any suggested follow-up tasks or related issues to create
$ARGUMENTS