openq-tools
Skill0 starsChanged 9 months agoApache-2.0View on GitHub
Open questions register. Use for: QID generation, OQ-SIG-001 format IDs, append questions, open_questions.md. Generate sequential QIDs, append questions with context. Use in clarifier when registering open questions instead of guessing. Invoke via bash .claude/scripts/demoswarm.sh openq next-id|append.
- Installs packages
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
All paths are repo-root-relative.
- Distinctive: line 38
Never modifies existing entries
- Distinctive: line 39
Only appends new questions at the end
- Distinctive: line 123
When a question is resolved, the original entry is updated (status changed) and resolution fields are appended.
- Very specific: line 198
Use
next-idonly: if you need to preview the ID before appending
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Open Questions Tools Skill
Helpers for the open questions register (open_questions.md). Generates sequential QIDs and appends entries.
Invocation
Always invoke via the shim:
bash .claude/scripts/demoswarm.sh openq <command> [options]Do not set PATH or call helpers directly. The shim handles resolution.
Operating Invariants
Repo root only
- Assume working directory is repo root.
- All paths are repo-root-relative.
QID format
- Pattern:
OQ-<FLOW>-<NNN>(e.g.,OQ-SIG-001,OQ-PLAN-002,OQ-BUILD-003) - Flow codes:
SIG(signal),PLAN(plan),BUILD(build),REVIEW(review),GATE(gate),DEPLOY(deploy),WISDOM(wisdom) - Sequential within flow (auto-incremented from existing entries)
Append-only
- Never modifies existing entries
- Only appends new questions at the end
Allowed Users
Primary:
clarifier- Flow orchestrators (when questions arise mid-flow)
Secondary:
- Any agent that needs to register an open question rather than guessing
Command Reference
| Command | Purpose |
openq next-id | Generate next QID for a flow |
openq append | Append question entry to file |
Quick Examples
Generate next QID
# Get next available QID for signal flow
bash .claude/scripts/demoswarm.sh openq next-id \
--file ".runs/feat-auth/signal/open_questions.md" \
--prefix "SIG"
# stdout: OQ-SIG-003 (next available)
# For plan flow
bash .claude/scripts/demoswarm.sh openq next-id \
--file ".runs/feat-auth/plan/open_questions.md" \
--prefix "PLAN"
# stdout: OQ-PLAN-001 (if empty)Append a question
# Append new open question (auto-generates QID)
bash .claude/scripts/demoswarm.sh openq append \
--file ".runs/feat-auth/signal/open_questions.md" \
--prefix "SIG" \
--question "Should authentication use JWT or session cookies?" \
--default "Use JWT for stateless authentication" \
--impact "Session cookies require server-side state management"
# stdout: OQ-SIG-003 (the assigned QID)Contract Rules
- stdout: QID string for both
next-idandappend(append returns the assigned QID) - exit code:
0on success, non-zero on failure - File missing:
next-idreturns first ID (e.g.,OQ-SIG-001);appendcreates file with header if needed - Auto-increment:
appendautomatically generates the next QID (no need to callnext-idfirst)
Entry Format
Appended entries follow this format:
- QID: OQ-SIG-003
- Q: Should authentication use JWT or session cookies? [OPEN]
- Suggested default: Use JWT for stateless authentication
- Impact if different: Session cookies require server-side state management
- Added: 2025-12-12T10:30:00ZResolution Format
When a question is resolved, the original entry is updated (status changed) and resolution fields are appended. Resolution tracking enables cleanup agents to count resolved vs unresolved questions.
Resolution Fields
| Field | Description | Example |
- A: | The answer/decision made | JWT approach adopted |
Resolved in: | Artifact where resolution is documented | requirements.md (REQ-003) |
Resolution SHA: | Git commit where resolution occurred | abc123def or null |
Validated by: | Agent/critic that validated the resolution | requirements_critique |
Resolved Entry Example
- QID: OQ-SIG-001
- Q: Should authentication use JWT or session cookies? [RESOLVED]
- Suggested default: Use JWT for stateless authentication
- Impact if different: Session cookies require server-side state management
- Added: 2025-12-12T10:30:00Z
- A: JWT approach adopted per security requirements
- Resolved in: requirements.md (REQ-003)
- Resolution SHA: abc123def
- Validated by: requirements_critiqueStatus Values
| Status | Marker | Meaning |
| Open | [OPEN] | Question awaiting resolution |
| Resolved | [RESOLVED] | Question answered with evidence |
| Deferred | [DEFERRED] | Valid question, not needed for current flow |
Resolution Criteria
A question is considered resolved when any of these conditions are met:
- Explicit answer: The question has a
- A:line with an answer - Status change: Question text changed from
[OPEN]to[RESOLVED] - Requirement linkage: A requirement explicitly addresses the question (QID referenced in requirements.md)
Counting Resolutions
Cleanup agents use these patterns for mechanical counting:
# Count total questions
bash .claude/scripts/demoswarm.sh count pattern \
--file ".runs/<run-id>/signal/open_questions.md" \
--regex '^- QID: OQ-[A-Z]+-[0-9]{3}' \
--null-if-missing
# Count resolved questions (with - A: lines)
bash .claude/scripts/demoswarm.sh count pattern \
--file ".runs/<run-id>/signal/open_questions.md" \
--regex '^- A:' \
--null-if-missing
# Count questions with [RESOLVED] status
bash .claude/scripts/demoswarm.sh count pattern \
--file ".runs/<run-id>/signal/open_questions.md" \
--regex '\[RESOLVED\]' \
--null-if-missingNote: Resolution count may differ from - A: count if questions are resolved via requirement linkage rather than explicit answers.
For Agent Authors
In clarifier or when questions arise:
- Just call
append— it auto-generates and returns the QID - Never hand-roll QID counters — let the tool handle sequencing
- Use
next-idonly if you need to preview the ID before appending
Example pattern:
# Simple: append directly (auto-generates QID, returns it)
QID=$(bash .claude/scripts/demoswarm.sh openq append \
--file ".runs/${RUN_ID}/signal/open_questions.md" \
--prefix "SIG" \
--question "What is the expected session timeout?" \
--default "30 minutes of inactivity" \
--impact "Shorter timeout improves security but reduces UX")
echo "Registered question: $QID"Flow Codes Reference
| Flow | Code | Example QID |
| signal | SIG | OQ-SIG-001 |
| plan | PLAN | OQ-PLAN-001 |
| build | BUILD | OQ-BUILD-001 |
| review | REVIEW | OQ-REVIEW-001 |
| gate | GATE | OQ-GATE-001 |
| deploy | DEPLOY | OQ-DEPLOY-001 |
| wisdom | WISDOM | OQ-WISDOM-001 |
Installation
The Rust implementation is preferred. Install to repo-local directory:
cargo install --path tools/demoswarm-runs-tools --root .demoswarmThe shim will automatically resolve in order:
.demoswarm/bin/demoswarm(repo-local install, preferred)demoswarmon PATH (global install)cargo runfallback (dev environments)- Python fallback (legacy)
In this repository21 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- auto-linterSkill
- changelogSkill
- commitSkill
- debugSkill
- docsSkill
- exploreSkill
- featureSkill
- fixSkill
- forensicSkill
- policy-runnerSkill
- pr-createSkill
- pr-prepSkill
- refactorSkill
- reviewSkill
- runs-deriveSkill
- runs-indexSkill
- secrets-toolsSkill
- spec-execSkill
- test-runnerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

