Merged
Conversation
Quick task completed: - Updated docs/agent.md with TOutput documentation - Added PhaseResearcherOutput to gsd-phase-researcher.tsx - Added SimpleOrchestratorOutput to simple-orchestrator-agent.tsx - Updated STATE.md with quick task record Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 15: Command Output Handling - useOutput hook pattern documented - OnStatus component architecture defined - IR node structure (OnStatusNode) specified - Emitter output format established - Field interpolation pattern documented Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 15: Command Output Handling - 3 plan(s) in 3 wave(s) - Sequential execution (wave dependencies) - Ready for execution Plans: - 15-01: useOutput hook and OutputRef type (JSX layer) - 15-02: OnStatus component parsing and IR (Parser/IR layer) - 15-03: Emitter for status-based conditional blocks Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OutputRef<T> interface with agent name and typed field() accessor - Add useOutput<T> hook returning OutputRef for status-based handling - Add OnStatusProps interface with output and status props - Add OnStatus component for conditional agent status handling - Export new types and components from index.ts - Also add missing If/Else/AgentStatus/BaseOutput exports Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tasks completed: 2/2 - Add OutputRef interface and useOutput hook - Add OnStatus component and props SUMMARY: .planning/phases/15-command-output-handling/15-01-SUMMARY.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OutputReference interface for agent output binding - Add OnStatusNode with outputRef, status, and children fields - Add OnStatusNode to BlockNode union - Add emitter stub for OnStatusNode (throws not yet implemented) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OnStatusNode to imports - Add 'OnStatus' to SPECIAL_COMPONENTS set - Add outputs map for tracking useOutput declarations - Add extractOutputDeclarations method to parse useOutput calls - Add transformOnStatus method with: - Output prop extraction and validation (must be identifier from useOutput) - Status prop extraction and validation (SUCCESS/BLOCKED/NOT_FOUND/ERROR/CHECKPOINT) - Agent name resolution via outputs map - Children transformed as block content Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tasks completed: 2/2 - Add OnStatusNode to IR - Add transformOnStatus to transformer SUMMARY: .planning/phases/15-command-output-handling/15-02-SUMMARY.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Import OnStatusNode type from IR
- Update emitBlock switch to call emitOnStatus
- Add emitOnStatus method following emitIf/emitElse pattern
- Output format: **On {STATUS}:** followed by content
Add helper functions that generate shell test expressions from VariableRef:
- fileExists(varRef) → [ -f $VAR ]
- dirExists(varRef) → [ -d $VAR ]
- isEmpty(varRef) → [ -z $VAR ]
- notEmpty(varRef) → [ -n $VAR ]
- equals(varRef, value) → [ $VAR = value ]
- and(...tests) / or(...tests) → composable operators
Enables type-safe conditional tests instead of raw shell strings:
<If test={fileExists(outputFile)}>
vs
<If test="[ -f $OUTPUT_FILE ]">
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Quick task completed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add useOutput and OnStatus imports - Declare researchOutput binding to gsd-phase-researcher - Add OnStatus blocks for SUCCESS/BLOCKED/ERROR handling - Fix extractOutputDeclarations to use forEachDescendant - Add field expression handling in transformToInline Auto-fixed blocking issues: - extractOutputDeclarations only found module-level declarations - transformToInline ignored non-string JSX expressions
Tasks completed: 2/2 - Task 1: Add emitOnStatus to emitter - Task 2: Create test command with OnStatus SUMMARY: .planning/phases/15-command-output-handling/15-03-SUMMARY.md Phase 15 complete - v1.5 Command Output Handling ready for release
- Document useOutput hook for typed agent output references - Document OnStatus component for status-based conditional rendering - Document output.field() method for compile-time interpolation - Add complete example showing SpawnAgent + OnStatus pattern - Update Tips section with OnStatus best practices
…trator.tsx - Import useOutput, OnStatus from jsx.js - Import SimpleOrchestratorOutput type from agent file - Add useOutput declaration for agent output tracking - Add OnStatus handlers for SUCCESS and ERROR states - Demonstrates pattern alongside existing If/Else conditionals
- Add 'Related: OnStatus' section after Tips - Link to communication.md#handling-agent-output - Add comparison table differentiating If/Else from OnStatus
Tasks completed: 3/3 - communication.md: Handling Agent Output section - test-simple-orchestrator.tsx: useOutput/OnStatus example - conditionals.md: OnStatus reference section SUMMARY: .planning/quick/004-update-docs-and-tsx-files-for-plan-15-co/004-SUMMARY.md
Quick task completed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 16: Skill Component - Standard stack identified (reuse existing deps) - Architecture patterns documented (SkillDocument IR, multi-file output) - Pitfalls catalogued (YAML naming, path resolution, validation) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 16: Skill Component - 5 plans in 4 waves - Wave 1: IR + JSX types (16-01) - Wave 2: Transformer (16-02) - Wave 3: Emitter + build + exports (16-03, 16-04) - Wave 4: Test + docs (16-05) - Ready for execution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SkillFrontmatterNode: YAML frontmatter for skill metadata - SkillFileNode: generated files within skill directory - SkillStaticNode: static file copy instructions - SkillDocumentNode: document root with frontmatter, children, files, statics - IRNode union updated to include all new skill types
- SkillProps: name, description, disableModelInvocation, userInvocable, allowedTools, argumentHint, model, context, agent - SkillFileProps: name, children for generated files - SkillStaticProps: src, dest for static file copying - Skill(), SkillFile(), SkillStatic() stub functions returning null - JSDoc documentation with examples following Agent/Command pattern
Tasks completed: 2/2 - Skill IR node types in nodes.ts - Skill component exports in jsx.ts SUMMARY: .planning/phases/16-skill-component/16-01-SUMMARY.md
- Add 'Skill', 'SkillFile', 'SkillStatic' to SPECIAL_COMPONENTS - Update imports for Skill IR node types - Add transformSkill method with frontmatter extraction - Add getBooleanAttribute helper for boolean props - Validate skill name (lowercase, numbers, hyphens only) - Add processSkillChildren stub (implemented in Task 2) - Update transform() return type to include SkillDocumentNode
…atics - Replace processSkillChildren stub with full implementation - Separate SkillFile and SkillStatic from body content - Add transformSkillFile method (extracts name, transforms children) - Add transformSkillStatic method (extracts src, optional dest) - Body content handled via existing transformToBlock
Tasks completed: 2/2 - Add transformSkill method following transformAgent pattern - Add processSkillChildren to separate body, files, and statics SUMMARY: .planning/phases/16-skill-component/16-02-SUMMARY.md
- Add imports for SkillDocumentNode, SkillFileNode, SkillFrontmatterNode - Add emitSkillFrontmatter method (maps camelCase to kebab-case YAML) - Add emitSkill method for SKILL.md content generation - Add emitSkillFile method for supporting file content - Add convenience functions emitSkill and emitSkillFile - Export new functions from emitter/index.ts
- Add copyFile import for static file handling
- Add emitSkill, emitSkillFile imports from emitter
- Add SkillDocumentNode type import
- Add processSkill function for multi-file skill output
- Extend BuildResult with optional statics array
- Update runBuild to handle skillDocument type
- Add static file copying in write phase
- Build creates .claude/skills/{name}/ directory structure
- Add Agent component CLI support for building agent TSX files - Extend Command component with `arguments` prop for arrays of objects - Fix template literal extraction in XmlBlock children (both V1 and V3) - Use custom YAML emitter to avoid unnecessary quoting in frontmatter - Handle array of objects in runtime transformer for arguments arrays - Prevent trailing whitespace newlines from formatting between content and closing tags - Preserve intentional trailing newlines/whitespace in content Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.