New to FORGE? Start a free 30-day trial

Issue Management

Updated on Oct 5, 2026

frg issue drafts, reviews, triages, splits, and publishes a work item in your configured issue tracker, and generates the implementation plan that frg code works from. Use it at the start of a piece of work, before any code is written.

Prerequisites

  • A valid Telerik license. See Licensing.
  • A supported coding agent (claude_code, github_copilot, or opencode), installed and authenticated. Check it with frg status.
  • An issue tracker configured in .forge/config/toolchain.toml. See Toolchain Configuration.
  • An Issue ID in the current context. Every frg issue subcommand requires one:
bash
export FORGE_ISSUE_ID=123 # current shell only
frg config set-issue 123 # saved in the project context
frg config show-context # verify

Without an Issue ID, Forge stops with Issue ID required for 'issue' operations.

Subcommands at a glance

All local files are written to .forge/work/job_<issue_id>/.

SubcommandWhat it doesTypical inputsOutputsDefault role
draftCreates a local issue draftThe issue in the tracker, optional instructionsissue/issue.mdproduct_manager
reviewReviews the issue for completeness and qualityissue/issue.mdissue/review.mdproduct_manager
publishPublishes the local draft to the issue trackerissue/issue.mdUpdated issue description in the tracker (no local file)product_manager
planGenerates an implementation planissue/issue.mdcode/README.md, code/research.md, code/tasks.md, code/phase_x.md (lite: README.md, tasks.md, phase_1.md)software_architect
triageEvaluates and prioritizes the issueissue/issue.mdissue/triage.mdproduct_manager
splitSplits a large issue into smaller work itemsissue/issue.mdissue/issue_*.md (for example issue_a.md, issue_b.md)product_manager
askAnswers a question about the current issueQuestion, issue/issue.mdissue/answer.mdproduct_manager

Typical flow

text
set-issue ──► draft ──► review ──► draft --edit ──► publish ──► plan ──► frg code create
 ▲ │
 └──────────────┘ repeat until the review is clean
  1. Set the issue you are working on:
bash
frg config set-issue 123
  1. Create a local draft, then review it:
bash
frg issue draft
frg issue review
  1. Refine the draft with the findings from review.md:
bash
frg issue draft --edit "Address the gaps listed in review.md"
  1. Publish the description to the issue tracker:
bash
frg issue publish
  1. Generate the implementation plan:
bash
frg issue plan # full plan
frg issue plan --lite # single-phase plan for a small change
  1. Continue with Code Operations (frg code create).

Options shared by all subcommands

Every frg issue subcommand accepts these options. Subcommand sections list only the additional options.

OptionDescriptionDefault
-a, --agent <NAME>Coding agent for this run: claude_code, github_copilot, or opencode.Agent in agents.toml
-r, --role <ROLE>Overrides the default role: product_manager, software_engineer, software_architect, technical_writer, security_analyst, sre. Cannot be combined with --custom-agent.Subcommand default role
--custom-agent <NAME>Selects a custom agent configuration inside your coding agent (for example python-expert). Cannot be combined with --role.None
-m, --model <MODEL>Overrides the model configured in agents.toml. Valid values depend on the agent.Model in agents.toml
-c, --context-file <FILE>Adds a file path as context. Repeatable.None
--context-dir <DIR>Adds a directory as context. Repeatable. Up to 100 files per directory and 1 MB per file; binary files and hidden directories are skipped.None
--clearClears the existing agent session and starts fresh.Off
--retry [<INSTRUCTIONS>]Continues the previous session to complete missing outputs, with optional extra instructions. Requires an existing session; cannot be combined with --clear.Off
--auto-retryRetries once automatically when expected outputs are missing. Cannot be combined with --clear.Off
--print-promptPrints the compiled prompt without running the agent.Off
--bypass-safety-checksSkips prompt-injection validation. Bypasses are logged. See Prompt Safety.Off
-q, --quietSuppresses all output except errors.Off

To follow agent progress from another terminal, run FORGE_ISSUE_ID=123 frg --tail.

frg issue draft

Creates or refines the local issue description.

text
frg issue draft [OPTIONS]
OptionDescription
--edit [<INSTRUCTIONS>]Refines the draft with your instructions, given inline or in edit.md.
--liteWrites a lightweight draft with essential details only. Flag only.
--lite-edit [<INSTRUCTIONS>]Lightweight draft with your instructions, given inline or in lite-edit.md.
bash
frg issue draft
frg issue draft --lite-edit "Emphasize the security implications"

Output: .forge/work/job_<issue_id>/issue/issue.md. For how instruction files are resolved, see Modifiers.

frg issue review

Reviews the issue for completeness and quality and lists actionable recommendations.

text
frg issue review [OPTIONS]
OptionDescription
--edit [<INSTRUCTIONS>]Refines the review with your instructions, given inline or in edit.md.
--liteFocused review with actionable items only (gaps, risks, recommendations); excludes positive observations. Flag only.
--lite-edit [<INSTRUCTIONS>]Focused review with your instructions, given inline or in lite-edit.md.
bash
frg issue review
frg issue review --lite

Output: .forge/work/job_<issue_id>/issue/review.md.

frg issue publish

Publishes the local draft to the issue tracker. Only the description field is updated; state, labels, and other metadata are left unchanged.

text
frg issue publish [OPTIONS]

No additional options.

bash
frg issue publish

Notes:

  • publish requires .forge/work/job_<issue_id>/issue/issue.md. If the file does not exist, the agent stops and reports that it cannot find the draft to publish. Run frg issue draft first.
  • No local output file is written.

issue publish and pr publish transfer the draft body to the tracker by file reference instead of inline text, so the published description matches the local file as authored. This is internal behavior, not a command option.

frg issue plan

Generates an implementation plan that frg code and frg docs operations read.

text
frg issue plan [OPTIONS]
OptionDescription
--edit [<INSTRUCTIONS>]Refines the plan with your instructions, given inline or in edit.md.
--liteLightweight plan with core essentials only: single phase, no diagrams. Flag only.
--lite-edit [<INSTRUCTIONS>]Lightweight plan with your instructions, given inline or in lite-edit.md.
bash
frg issue plan
frg issue plan --lite-edit "Include database migration steps"

Output in .forge/work/job_<issue_id>/code/:

Plan typeFiles
FullREADME.md (approach), research.md (research and decisions), tasks.md (task checklist), phase_x.md (one file per phase)
LiteREADME.md, tasks.md, phase_1.md

Forge detects a lite plan automatically when README.md, tasks.md, and exactly one phase file (phase_1.md) exist.

frg issue triage

Evaluates and prioritizes the issue: severity, urgency, effort, and priority, with justifications.

text
frg issue triage [OPTIONS]

No additional options.

bash
frg issue triage

Output: .forge/work/job_<issue_id>/issue/triage.md.

frg issue split

Splits a large issue into smaller work items.

text
frg issue split [OPTIONS]

No additional options.

bash
frg issue split

Output: one issue_*.md file per work item in .forge/work/job_<issue_id>/issue/, for example issue_a.md and issue_b.md.

frg issue ask

Answers a question about the current issue context.

text
frg issue ask [OPTIONS] [QUESTION]

No additional options.

bash
frg issue ask "What are the acceptance criteria?"
frg issue ask "What dependencies does this have?"

Output: .forge/work/job_<issue_id>/issue/answer.md.

If issue.md is missing, the reading operations can retrieve the issue from the tracker instead. publish never does this.

See Also