원클릭으로
project-issues
Track, manage, and fix issues across all projects (full lifecycle, strict format)
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Track, manage, and fix issues across all projects (full lifecycle, strict format)
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Apply approved review findings to a document — reads the review file and makes targeted edits
Systematically review design documents for bugs, inconsistencies, and missing cases
Systematically review requirements documents for completeness, testability, and consistency
Systematically review task breakdowns for completeness, dependency correctness, and implementability
Incremental write pattern for long documents (design, requirements, specs, postmortems, RFCs, ADRs, any structured markdown)
Remove signs of AI-generated writing from text. Activate before publishing social posts (Reddit, HN, X, blogs) or any external-facing content. Detects 29+ AI writing patterns from Wikipedia's "Signs of AI writing" guide and rewrites them while preserving meaning. Supports voice calibration via writing samples.
| name | project-issues |
| description | Track, manage, and fix issues across all projects (full lifecycle, strict format) |
| version | 5.0.0 |
| author | potato |
| triggers | {"patterns":["issue:","bug:","improvement:","记一下这个bug","记一下这个问题","这个需要改进","需要fix","需要修","发现一个问题","有个bug","要改进","项目问题","fix ISS-","close ISS-","ISS-\\d+ closed","ISS-\\d+ wontfix","ISS-\\d+ blocked","show all issues","所有.*issue","issue dashboard","audit issues","lint issues","rebuild issues index"],"keywords":["issue","bug report","improvement needed","需要改","记个issue","fix","fix issue","修复","close","wontfix","dashboard","audit"]} |
| tags | ["productivity","project-management","quality"] |
| priority | 70 |
| always_load | false |
| max_body_size | 4096 |
Capture bugs, improvements, and issues with strict file format enforcement. Every issue is a self-contained directory with a canonical
issue.mdwhose YAML frontmatter is the single source of truth. The aggregateissues-index.mdis a derived view, regenerated from frontmatter — never hand-edited.
v4 designed a centralized issues-index.md model where the index was the source of truth and ISS-NNN/ directories were optional workrooms. In practice this collapsed: issues drifted into issue.md / README.md / ISSUE.md / bare .md files; status lines used 5 different formats; the index fell out of sync (rustclaw index has 6 entries vs 27 actual issues, with stale statuses).
v5 inverts the model:
ISS-NNN/issue.md with strict YAML frontmatterissues-index.md is auto-rebuilt from frontmatter (a script — never written by hand)issue.md. Not README.md, not ISSUE.md, not ISS-NNN.mdISS-NNN/ (no more bare .md files at issues root)使用项目的过程中总会发现问题——bug、性能瓶颈、UX 改进、缺失功能。这些发现如果散落在 daily log、engram、随机文件里,以后根本找不到。
每个项目在 .gid/issues/ 下统一管理所有 issue,遵守 v5 strict format。
{project_root}/
├── .gid/
│ ├── docs/
│ │ └── issues-index.md ← AUTO-GENERATED. Do not hand-edit.
│ └── issues/
│ ├── ISS-001/ ← REQUIRED: directory, NOT a bare .md file
│ │ ├── issue.md ← REQUIRED: canonical name. Frontmatter = source of truth.
│ │ ├── design.md ← OPTIONAL: when fix needs design
│ │ ├── reviews/ ← OPTIONAL: review findings
│ │ └── ... ← any other artifacts
│ ├── ISS-002/
│ │ └── issue.md
│ └── ISS-NNN/
│ └── issue.md
ISS-NNN (zero-padded to 3 digits, no suffix)
ISS-022-migrate-start-ritual.md (bare file)ISS-22/ (not zero-padded)ISS-022/issue.md (lowercase, exact name)
ISS-007/README.mdISS-014/ISSUE.mdISS-007/issue.mdissue.md MUST start with YAML frontmatter (see schema below)issues-index.md MUST NOT be hand-edited — it's regenerated by Step F: Rebuild IndexSome legacy ISS-NNN/ dirs (e.g., rustclaw ISS-002, ISS-004, ISS-006) contain only design/reference docs with no issue.md. These are archives, not issues. Migration:
issue.md with status: superseded pointing to the archive docs.gid/issues/ without an issue.mdEvery issue.md MUST start with this frontmatter. Fields are validated by lint.
---
id: ISS-007 # REQUIRED. Match the directory name.
title: "Engram memory recall quality — three bugs" # REQUIRED. Single line, ≤80 chars.
type: bug # REQUIRED. One of: bug | improvement | performance | ux | missing | debt
priority: P1 # REQUIRED. One of: P0 | P1 | P2 | P3
status: open # REQUIRED. One of: open | in_progress | blocked | closed | wontfix | superseded
created: 2026-04-15 # REQUIRED. ISO date.
reporter: potato # REQUIRED. potato | RustClaw | OpenClaw | <name>
component: "src/agent.rs, engramai/recall" # OPTIONAL but recommended. Comma-separated paths/modules.
# When status changes, fill the matching fields:
closed: 2026-04-25 # REQUIRED if status ∈ {closed, wontfix, superseded}
commits: # REQUIRED if status == closed. ≥1 entry. Format: "<repo>:<full-hash>"
- rustclaw:b10c9f9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a
- gid-rs:6e5782b0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
blocked_by: # REQUIRED if status == blocked. List of blocker refs.
- engram:ISS-032
wontfix_reason: "Superseded by ISS-021 design" # REQUIRED if status == wontfix
superseded_by: ISS-029 # REQUIRED if status == superseded
# Optional cross-references:
related: [ISS-005, ISS-008] # Related issues (any project)
tags: [memory, recall] # Free-form labels
---
# {title}
## Problem
{Clear problem statement. For bugs: include reproduction steps. For improvements: state current vs desired behavior.}
## Context
{Why it matters. Where it was discovered.}
## Proposed Solution
{If known. Otherwise "TBD — needs analysis".}
## Resolution ← Required when status == closed
{One-paragraph summary of what was actually fixed and how.}
The body is human-readable detail. The frontmatter is the contract — lint and index rebuild only read frontmatter.
{project_root}/.gid/issues/ISS-NNN/issue.md
Project paths resolved via .gid/projects.yml. Fallback list in MEMORY.md → "Canonical Project Roots". If unknown, ask potato.
⚠️ NEVER create the project root directory. .gid/issues/ISS-NNN/ may be created; the project root must already exist.
.gid/projects.yml or fallback list..gid/issues/ISS-* directories. Next number = max + 1, zero-padded to 3 digits..gid/issues/ISS-{NNN}/ directory.issue.mdUse the frontmatter schema above. Required fields for a new issue:
id, title, type, priority, status: open, created, reportercomponent (strongly recommended)Body: at minimum ## Problem and ## Context.
memory/YYYY-MM-DD.md):
## Issue Recorded: {project} ISS-NNN
- {one-line description}
- {project_path}/.gid/issues/ISS-NNN/issue.md
engram_store(type=factual, importance=0.5,
content="{project} ISS-NNN: {title}. Type={type}, Priority={priority}")
Always rebuild after creating/closing/changing status.
🐛 **Issue Recorded: {project} ISS-{NNN}**
Type: {type} | Priority: {priority}
{one-line description}
📂 {project_path}/.gid/issues/ISS-NNN/issue.md
Triggers: close ISS-NNN, ISS-NNN wontfix, ISS-NNN blocked by ..., etc.
ISS-NNN/issue.md, parse frontmatter.| Transition | Required field updates |
|---|---|
→ in_progress | status: in_progress |
→ closed | status: closed, closed: <today>, commits: [<repo>:<hash>, ...] (≥1) |
→ wontfix | status: wontfix, closed: <today>, wontfix_reason: "..." |
→ blocked | status: blocked, blocked_by: [<ref>, ...] |
→ superseded | status: superseded, closed: <today>, superseded_by: ISS-XXX |
| priority change | priority: P? |
cd {project_root} && git log -10 --format="%H %s" | grep -i "ISS-NNN"
If no matching commits found → ask potato for the commit hash(es). Never close without commits: filled.## Resolution section to the body.Triggers: show all issues, issue dashboard, 所有.*issue
.gid/projects.yml (or fallback list)..gid/issues/ISS-*/issue.md, parse frontmatter.priority, filter by status (default: open + in_progress + blocked + last-7-days closed).fix ISS-NNN)End-to-end fix: analyze → fix → commit → verify → close. Skill-based (not ritual) — keeps full session context.
status not in {open, in_progress} → tell potato + STOP.status: in_progress (prevents heartbeat retrigger).search_files / gid_query_impact.🔧 Starting fix for {project} ISS-NNN — Priority {priority}.edit_file. Don't drive-by refactor.spawn_specialist (builder).5 files changed → pause, list changes, ask potato.
cd {project_root} && git add -A && git commit -m "fix({project}): ISS-NNN {brief}"
Commit failure → STOP + tell potato.verify_command from .gid/config.yml. Defaults by language:
Cargo.toml → cargo testpackage.json → npm testpyproject.toml → pytestgo.mod → go test ./...status to open, keep code, notify potato + STOP.commit_hash=$(git -C {project_root} log -1 --format=%H)issue.md frontmatter:
status: closedclosed: <today>commits: [<project>:<commit_hash>] (cross-project: list multiple)## Resolution section to body with one-paragraph summary.## Issue Closed: {project} ISS-NNN
- **Title**: {title}
- **Commit**: {hash}
- **Resolution**: {summary}
importance=0.6 (P0 → 0.8).✅ {project} ISS-NNN fixed and closed — {summary}\nCommit: {hash_short}.| Step | Failure | Action |
|---|---|---|
| C1 | Issue missing / already closed | STOP + notify |
| C2 | Cannot identify root cause | STOP + notify + suggest manual |
| C2 | Commit fails | STOP + notify |
| C3 | Tests fail | Keep code, revert status to open, notify, STOP |
| C4 | Frontmatter edit fails | Notify, ask manual fix |
| C4 | Cannot determine commit hash | Notify potato — DO NOT close without commits |
| C5 | Daily log / engram fail | Consider fix successful, notify |
All failures → daily log.
audit issues / lint issues)Validate every issue against the strict format. Run before any rebuild.
Checks per issue:
.md file at issues root (must be a directory)^ISS-\d{3}$issue.md in directoryissue.md missing YAML frontmatterid, title, type, priority, status, created, reporterid doesn't match directory nametype: foo, priority: P5)status: closed but closed date missingstatus: closed but commits missing or emptystatus: blocked but blocked_by missingstatus: wontfix but wontfix_reason missingstatus: superseded but superseded_by missingclosed date earlier than created## Problem sectionOutput format:
## Lint Report: {project} (.gid/issues/)
### ❌ Errors (must fix)
- ISS-007: missing `commits` field (status=closed)
- ISS-014: directory has `ISSUE.md` not `issue.md`
### ⚠️ Warnings
- ISS-021: closed date (2026-04-22) before created date (2026-04-23)
### ✅ Compliant
- 18/27 issues pass strict format
On lint failures: notify potato. Offer to migrate. Never auto-fix without confirmation — issues are project history.
When potato approves migrating malformed issues:
.md → directory:
mkdir -p ISS-022/
git mv ISS-022-migrate-start-ritual-to-workunit.md ISS-022/issue.md
issue.md:
git mv ISS-007/README.md ISS-007/issue.md
issue.md, only design archives): write a stub issue.md with status: superseded or status: closed and a body pointing to the archive files.rebuild issues index)issues-index.md is derived — generated by scanning all ISS-NNN/issue.md frontmatter.
Algorithm:
.gid/issues/ISS-*/issue.md..gid/docs/issues-index.md with header:
# Issues: {project_name}
> AUTO-GENERATED by project-issues skill v5. DO NOT EDIT BY HAND.
> Source: .gid/issues/ISS-NNN/issue.md frontmatter.
> Last rebuilt: {YYYY-MM-DD HH:MM}
## ISS-007 [bug] [P1] [open]
**Title**: Engram memory recall quality — three bugs
**Created**: 2026-04-15 | **Reporter**: potato
**Component**: src/agent.rs, engramai/recall
**Path**: `.gid/issues/ISS-007/issue.md`
{if closed}**Closed**: 2026-04-25 | **Commits**: rustclaw:b10c9f9, gid-rs:6e5782b
{if blocked}**Blocked by**: engram:ISS-032
This step runs automatically after: Step 2 (new issue), Step A (status change), Step C4 (close).
RustClaw 不只是被动记录。在以下场景主动创建 issue:
主动记录时,reporter: RustClaw,body 简要说明发现场景。
issues-index.md. Always Step F.issue.md is the only canonical filename. Not README.md, not ISSUE.md.commits field → not closed..md files at .gid/issues/ root..gid/issues/ISS-XXX/. Not in project root, not in docs/.| Trigger | Action |
|---|---|
bug: ... / improvement: ... | Pipeline Steps 1–5 (create new issue) |
fix ISS-NNN | Step C (full fix workflow) |
close ISS-NNN | Step A (collect commits, update frontmatter, rebuild index) |
ISS-NNN wontfix | Step A with wontfix_reason prompt |
ISS-NNN blocked by X | Step A with blocked_by |
show all issues / issue dashboard | Step B |
audit issues / lint issues | Step D |
rebuild issues index | Step F |
migrate ISS-NNN | Step E (offer migration plan) |
Existing projects (rustclaw has 27 issues, mostly v4 format) need a one-time migration:
audit issues on each project — get the lint report.rebuild issues index to regenerate issues-index.md.Do this incrementally, not all-at-once. Issues are history; mass-edits risk losing nuance.