en un clic
ks-roundtable
// Direction convergence skill. Use brainstorm, align, or challenge mode to turn messy questions or existing proposals into a clear directional decision.
// Direction convergence skill. Use brainstorm, align, or challenge mode to turn messy questions or existing proposals into a clear directional decision.
| name | ks-roundtable |
| description | Direction convergence skill. Use brainstorm, align, or challenge mode to turn messy questions or existing proposals into a clear directional decision. |
| layer | decision |
| owner | roundtable |
| inputs | ["task_description","constraints"] |
| outputs | ["roundtable_report","direction_decision"] |
| entry_modes | ["from-scratch","aligned-offline"] |
Preamble: see templates/preamble.md
Direction-convergence hub. Uses Socratic questioning and internal multi-role previewing to compress a messy problem, proposal, or direction into one clear decision. Enter when the real blocker is "what should happen first", "which path is more valuable", or "whether this should happen now at all". If direction is already clear, go to writing-plan. Does not write implementation tasks, produce technical design, or act as a quality gate.
| Mode | Use when | Goal |
|---|---|---|
brainstorm | no executable direction exists yet | discover candidate directions |
align | offline direction exists, needs fast convergence | fill boundaries, assumptions, smallest viable loop |
challenge | proposal exists, needs adversarial review | expose risks, blind spots, cost of the wrong path |
brainstormalignchallengeGray areas:
challengealignbrainstorm| Role | Responsibility | Typical question |
|---|---|---|
product-manager | value, user need, prioritization | does this help the user enough to matter now? |
software-architect | architecture, tech debt, scalability | will this hold up over the next few months? |
frontend-engineer | frontend feasibility, UX reachability | can this interaction be implemented cleanly? |
backend-engineer | backend feasibility, data consistency, API shape | does the contract and data model make sense? |
sre | reliability, monitoring, recovery | can this run safely and can failure be detected? |
security-architect | security boundaries, permissions, data protection | does this create a security risk? |
Additional roles activated on demand: ux-researcher, incident-response-commander, code-reviewer, delivery-owner.
Activation: 3 roles by default, expand to 4-5 for complex questions, minimum 2 + moderator. Even a very small problem should still use at least 2 roles plus the moderator.
Mode-role matching:
brainstorm → product, architecture, feasibilityalign → boundary, dependency, smallest-loop claritychallenge → security, reliability, excluded paths, wrong-choice costMore roles are not automatically better. Match the role mix to the mode and problem complexity.
Run these checks before entering. If any fails, do not enter roundtable:
diagnose)verify)If the problem is already clear enough to define a current block, skip directly to writing-plan.
Do this internally before asking the user anything. Do not dump this stage to the user.
Compress the decision topic into one sentence
brainstorm.Confirm the mode: brainstorm, align, or challenge
Activate relevant roles (see Mode-role matching above)
Let each role form: Position, Reason, Risk
This stage gives the moderator enough internal structure to ask targeted questions. It does not replace the user-facing question phase.
Ask the user one question at a time. Minimum 3 meaningful questions before the final report.
Per-mode question templates:
brainstorm (goal: discover candidate directions):
align (goal: fill boundaries, assumptions, smallest viable loop):
challenge (goal: expose risks, blind spots, cost of wrong path):
Circuit breaker: if the user gives 2 consecutive low-information answers ("continue", "up to you", "either is fine"), force a directional conclusion with risk disclosure. Do not keep asking.
Stop asking questions and produce the final report when any one is true:
If missing information is still too large and continuing would mislead execution:
escalate = trueProduce the report only after the question phase exits. The final report must not appear before the question phase.
## Roundtable Final Report
**Mode**: [brainstorm / align / challenge]
**Topic**: [the actual decision in one sentence]
**Activated roles**: role-a, role-b, role-c
### Role Views
- role-a: [1-2 sentences covering position and risk]
- role-b: [1-2 sentences covering position and risk]
- role-c: [1-2 sentences covering position and risk]
### Summary
- **Consensus**: [1-2 sentences describing where roles agree]
- **Disagreement**: [explicit disagreement points, or "none"]
### Conclusion
- **Decision**: [one directional conclusion]
- **Why**: [why this direction won over alternatives]
- **Excluded paths**: [what was excluded and why]
- **Wrong-choice cost**: [most expensive cost if this direction is wrong]
### Next Step
- **next_skill**: writing-plan
- **Entry condition**: direction is now clear enough to define the current block
| Failure | Action |
|---|---|
| Cannot compress topic into one sentence | Switch to brainstorm mode and ask the user to describe the problem from scratch |
| User gives 2+ non-answers | Apply circuit breaker; force conclusion with risk disclosure |
| Roles produce irreconcilable positions | See E2 |
| Direction converges but scope is vague | See E3 |
| Missing information too large to continue | Set escalate = true; list missing points; do not fake convergence |
When the user gives 2+ consecutive low-information answers ("continue", "up to you", "either is fine", "whatever you think"):
confidence = 0.7 instead of 0.9escalate = true and route to orchestrateWhen activated roles produce irreconcilable positions (e.g., security-architect says "do not ship" while product-manager says "ship now"):
escalate = trueorchestrate instead of writing-plan when escalate = trueWhen the decision topic is answered but the scope boundary is still vague (e.g., "build notification system" is agreed but "how much of it" is not):
writing-plan with a vague scopewriting-plan with an explicit note that scope needs compressionconfidence = 0.8 because the direction is clear but the boundary is soft| Outcome | next_skill | Condition |
|---|---|---|
| direction converged | writing-plan | topic answered, scope is clear enough |
| direction deferred | roundtable | more discussion needed |
| escalation | orchestrate | disagreement unresolvable by the skill |
| scope unclear | writing-plan | with note that scope compression is needed |
decision: roundtable-aligned confidence: 0.9 rationale: The topic has been converged in the appropriate mode, role disagreement has been exposed, and no further direction discussion is required before planning. fallback: If the chosen direction fails, return to roundtable and reopen the broader option set. escalate: false next_skill: writing-plan next_action: Enter writing-plan and define the executable block.
| Situation | decision | escalate | next_skill |
|---|---|---|---|
| direction converged | roundtable-aligned | false | writing-plan |
| more discussion needed | roundtable-deferred | false | roundtable |
| disagreement unresolvable | roundtable-escalate | true | orchestrate |
_KS_CLI="${KEYSTONE_CLI:-./keystone}"
$_KS_CLI state set current_stage "roundtable" >/dev/null
$_KS_CLI state set last_decision "$_DECISION" >/dev/null
$_KS_CLI state set artifacts.roundtable_mode "$_ROUNDTABLE_MODE" >/dev/null
case "$_DECISION" in
roundtable-aligned)
_EXIT_CODE="ok"
_EXIT_NEXT="writing-plan"
_EXIT_REASON="Direction converged"
;;
roundtable-deferred)
_EXIT_CODE="deferred"
_EXIT_NEXT="roundtable"
_EXIT_REASON="More discussion is still needed"
;;
roundtable-escalate)
_EXIT_CODE="escalate"
_EXIT_NEXT=""
_EXIT_REASON="Directional disagreement cannot be resolved safely"
;;
esac
$_KS_CLI state set exit_code "$_EXIT_CODE" >/dev/null
$_KS_CLI state set exit_reason "$_EXIT_REASON" >/dev/null
$_KS_CLI state set next_skill "$_EXIT_NEXT" >/dev/null
echo "{\"skill\":\"roundtable\",\"ts\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"decision\":\"$_DECISION\",\"confidence\":0.9,\"mode\":\"$_ROUNDTABLE_MODE\"}" >> .keystone/telemetry/events/$(date +%Y-%m).jsonl
Lightweight task compressor. Turn messy input into a one-page brief that can route to roundtable or writing-plan without replacing direction decisions.
Formal quality gate with multi-persona review, confidence thresholds, and QA routing based on fresh verification evidence.
Use this when direction is already clear and the next job is to compress it into an executable block with scope, done criteria, and routing.
Fast failure classifier. Decide whether the problem is a spec gap, an implementation bug, or a rollback candidate before routing to writing-plan, diagnose, or ship.
Use this when the system is broken, tests are failing, or behavior is abnormal and the root cause is still unknown. No investigation, no fix.
Use this when the current block is already clear and the job is to complete it. Default route comes from test-first; only controlled low-risk exceptions may enter directly.