بنقرة واحدة
idea-intake-workflow
Unified command interface for the autonomous idea intake workflow system
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Unified command interface for the autonomous idea intake workflow system
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Route complex requests to the right specialist agent or chain of agents. This skill acts as the central brain of an agent swarm — it analyses what the user needs, determines which specialist domain(s) are required, and coordinates parallel or sequential agent execution. Use this skill when a request spans multiple domains (e.g., "research competitors and create a pitch deck"), when you need to decide which specialist should handle an ambiguous request, or when a task requires a multi-step pipeline across different skills. Triggers on: multi-step requests, cross-domain tasks, "coordinate", "plan this out", "I need help with multiple things", or any complex request that touches more than one specialist area. Also triggers when the user seems unsure which tool or approach to use.
>-
>-
>-
>-
Compare entity financial ratios against ATO small business benchmarks to assess audit probability
| name | idea-intake-workflow |
| description | Unified command interface for the autonomous idea intake workflow system |
| version | 2.0.0 |
| commands | ["/workflow","/workflow capture","/workflow validate","/workflow process","/workflow status","/workflow stats"] |
| author | Matt Maher |
| last_updated | "2026-01-29T00:00:00.000Z" |
Single command interface for Matt Maher's "do-work" autonomous idea intake pattern. Provides unified access to capture, validation, and processing operations without needing to remember multiple commands across different skills.
This skill orchestrates three sub-skills into a cohesive workflow:
One command to rule them all: /workflow with intelligent subcommands that handle the entire lifecycle from idea capture to execution and archival.
Context Isolation: Each phase runs in isolated contexts to prevent pollution and maintain predictable behaviour:
/workflow capture/workflow validate to have Senior PM assess feasibility and assign agents/workflow process to autonomously execute validated items/workflow status to see what's happening in real-timeRapid capture mode (Capture Claude):
User: Fix the navigation padding on mobile
/workflow capture
User: Also analyze R&D transactions for FY2023-24
/workflow capture
User: And add dark mode toggle to settings
/workflow capture
Autonomous execution mode (Work Claude):
/workflow process --continuous
(Runs until queue empty or tokens exhausted)
Quick status check:
/workflow status
/workflow (no args)Shows interactive menu with current queue status and available commands.
Output:
🔄 Idea Intake Workflow v2.0.0
Current Queue Status:
├─ Pending: 3 items (awaiting validation)
├─ Validated: 2 items (ready to process)
├─ Processing: 1 item (currently executing)
└─ Completed: 15 items (archived)
Available Commands:
├─ /workflow capture - Capture the current message as an idea
├─ /workflow validate - Validate all pending items (PM review)
├─ /workflow process - Process validated items (execute work)
├─ /workflow status - Show detailed queue status
└─ /workflow stats - Show performance statistics
💡 Quick Actions:
- To capture current message: /workflow capture
- To validate all pending: /workflow validate
- To process everything: /workflow process --continuous
- To see what's happening: /workflow status
📚 Documentation: .agent/skills/idea-intake-workflow/SKILL.md
When to use:
Aliases: None (canonical form only)
/workflow captureCaptures the current user message (or previous message if empty) as an idea to the work queue.
Aliases: capture, add, queue, idea
Process:
Implementation:
import { addToQueue } from '@/lib/queue/work-queue-manager';
// Capture idea
const queueItem = await addToQueue({
title: generatedTitle,
description: userInputVerbatim,
queue_item_type: detectedType,
payload: {
original_message: userInput,
context: currentContext,
timestamp: new Date().toISOString(),
source: 'workflow-capture',
},
});
console.log(`✅ Captured: ${queueItem.title} (ID: ${queueItem.id})`);
Example 1 - Simple Bug:
User: The navigation header has too much padding on mobile devices
User: /workflow capture
Claude: ✅ Idea captured successfully!
**Title**: Fix navigation header padding on mobile
**Type**: Bug
**Queue position**: #3
**Status**: Pending validation
Next: The Senior PM agent will validate this idea and assign it to an agent.
Example 2 - Multiple Related Ideas (Grouped):
User: The description panel has two issues:
1. The copy icon overlaps with text
2. There's not enough spacing between sections
User: /workflow capture
Claude: ✅ Idea captured successfully!
**Title**: Fix description panel UI issues
**Type**: Bug
**Queue position**: #4
**Status**: Pending validation
Note: Grouped 2 related issues affecting the same component.
Next: Senior PM will validate and route to the appropriate agent.
Example 3 - Multiple Unrelated Ideas (Separated):
User: Fix the copy icon overlap. Also, analyze R&D transactions for FY2023-24.
User: /workflow capture
Claude: ✅ 2 ideas captured successfully!
1. **Fix copy icon overlap** (Bug) - Position #5
2. **Analyze R&D transactions for FY2023-24** (Feature) - Position #6
Note: Created separate items since these are different domains (UI vs tax analysis).
Next: Senior PM will validate both ideas.
Example 4 - Explicit Text Capture:
User: /workflow capture Add dark mode toggle to settings page
Claude: ✅ Idea captured successfully!
**Title**: Add dark mode toggle to settings page
**Type**: Feature
**Queue position**: #7
**Status**: Pending validation
Next: Senior PM will validate and assess feasibility.
Options:
--text "..." - Capture specific text instead of previous message--type <type> - Override auto-detection (feature|bug|improvement|client_request|task)--separate - Force multiple ideas to be separate items (disable grouping)Error Handling:
❌ Failed to capture idea
Error: Database connection failed
Suggestions:
- Check SUPABASE_SERVICE_ROLE_KEY is configured
- Verify Supabase project is running
- Run migration: supabase migration up
Your idea has not been lost. Please try again or contact support.
/workflow validateValidates all pending queue items using Senior PM Enhanced agent. Performs feasibility assessment, complexity analysis, duplicate detection, priority assignment, and agent routing.
Aliases: validate, review, pm-review
Process:
Implementation:
import { getQueueItemsByStatus, markAsValidating, markAsValidated } from '@/lib/queue/work-queue-manager';
import { validateQueueItem } from '@/lib/queue/pm-validator';
// Fetch pending items
const pendingItems = await getQueueItemsByStatus('pending');
for (const item of pendingItems) {
// Mark as validating
await markAsValidating(item.id);
// Run validation
const validationResult = await validateQueueItem(item);
// Mark as validated
await markAsValidated(item.id, validationResult);
console.log(`✅ Validated: ${item.title}`);
console.log(` Complexity: ${validationResult.complexity}`);
console.log(` Priority: ${validationResult.priority}`);
console.log(` Agent: ${validationResult.assigned_agent}`);
}
Example 1 - Single Item Validation:
User: /workflow validate
Claude: 🔍 Starting validation of pending items...
Validating: Fix navigation header padding on mobile
**Feasibility Score**: 85/100
- Frontend changes are straightforward with existing patterns
- UI component change with minimal risk
**Complexity**: Simple
- Single file change, straightforward implementation
**Priority**: P2 (Medium)
- Bug fix, affects user experience
**Assigned Agent**: general
- No specialist required
**Execution Strategy**: Direct
- Can execute immediately without planning phase
**Confidence**: 80%
**Duplicate Check**: No duplicates found
✅ Validation complete! Item ready for processing.
Status changed: pending → validated
Example 2 - Multiple Items with Duplicate Detection:
User: /workflow validate
Claude: 🔍 Starting validation of pending items...
[1/3] Validating: Fix description panel spacing
**Feasibility Score**: 90/100
**Complexity**: Simple
**Priority**: P2
**Agent**: general
**Strategy**: Direct
**Confidence**: 85%
**Duplicate**: ⚠️ Similar to UNI-42 (87% match)
Action: Merging context into existing Linear issue UNI-42
Status: Marked as duplicate, will not create new issue
---
[2/3] Validating: Analyze R&D transactions for FY2023-24
**Feasibility Score**: 95/100
- Xero integration available for data extraction
- R&D Tax Incentive specialist available
**Complexity**: Complex
- Significant analysis required, multiple files affected
**Priority**: P1 (High)
- R&D registration deadline approaching
**Assigned Agent**: rnd-tax-specialist
- Routed to R&D specialist for Division 355 analysis
**Execution Strategy**: Specialist Review
- Requires user approval before execution due to complexity
**Confidence**: 90%
**Duplicate**: No duplicates found
Action: Creating Linear issue...
✅ Created: UNI-45 - Analyze R&D transactions for FY2023-24
---
[3/3] Validating: Add dark mode toggle to settings
**Feasibility Score**: 85/100
**Complexity**: Medium
**Priority**: P3 (Low)
**Agent**: general
**Strategy**: Requires Planning
- Requires planning sub-agent before execution
**Confidence**: 80%
**Duplicate**: No duplicates found
Action: Creating Linear issue...
✅ Created: UNI-46 - Add dark mode toggle to settings
---
📊 Validation Summary
- Total pending: 3 items
- Validated: 3 items
- Duplicates: 1 item
- Linear issues created: 2 items
- Ready for execution: 3 items (2 new, 1 merged)
Next: Use `/workflow process` to start autonomous execution
Options:
--batch <N> - Validate max N items (default: all pending)--create-issues - Create Linear issues immediately (default: true)--skip-duplicates - Skip duplicate checking (faster, not recommended)Validation Criteria:
| Criterion | Thresholds | Action |
|---|---|---|
| Feasibility Score | < 50 | Mark as not feasible, require user review |
| Feasibility Score | 50-79 | Mark as feasible with notes |
| Feasibility Score | 80-100 | Mark as highly feasible |
| Duplicate Similarity | > 70% | Flag as duplicate, merge context |
| Duplicate Similarity | 50-70% | Flag as potential duplicate, notify user |
| Duplicate Similarity | < 50% | Not a duplicate |
Error Handling:
❌ Validation failed for: Analyze R&D transactions
Error: Linear API connection failed
Action: Marked as 'validating' (will retry)
Suggestion: Check LINEAR_API_KEY and retry
Continuing with other items...
/workflow processProcesses all validated queue items autonomously using the work-queue-processor pattern. Spawns fresh sub-agent contexts for each item to avoid context pollution.
Aliases: process, execute, work, do-work
Process:
Implementation:
import { getNextValidatedItem, markAsProcessing, markAsComplete, markAsFailed } from '@/lib/queue/work-queue-manager';
import { createIssue, updateIssue } from '@/lib/linear/api-client';
// Orchestrator loop
while (true) {
// Fetch next item
const item = await getNextValidatedItem();
if (!item) {
console.log('Queue is empty');
break;
}
// Mark as processing
await markAsProcessing(item.id);
// Create Linear issue if needed
if (!item.linear_issue_id) {
const issue = await createIssue(buildIssueFromQueue(item));
await updateLinearMetadata(item.id, {
issue_id: issue.id,
issue_identifier: issue.identifier,
issue_url: issue.url,
});
}
// Execute based on complexity
try {
let result;
if (item.complexity === 'simple') {
result = await executeSimpleTask(item);
} else if (item.complexity === 'medium') {
const plan = await spawnPlannerSubAgent(item);
result = await spawnExecutorSubAgent(item, plan);
} else {
const plan = await spawnPlannerSubAgent(item);
const approved = await askUserForApproval(plan);
if (!approved) {
await markAsFailed(item.id, 'User rejected plan');
continue;
}
result = await spawnExecutorSubAgent(item, plan);
}
// Mark as complete
await markAsComplete(item.id, result);
await updateIssue(item.linear_issue_id, {
stateId: await getStateIdByType('completed'),
});
} catch (error) {
// Mark as failed
await markAsFailed(item.id, error.message);
await updateIssue(item.linear_issue_id, {
stateId: await getStateIdByType('canceled'),
});
}
// Rate limit (4-second delay)
await sleep(4000);
}
Example 1 - Simple Item (Direct Execution):
User: /workflow process
Claude: ⚙️ Work Queue Processor Started
[1/3] Processing: Fix navigation header padding on mobile (UNI-43)
- Complexity: simple
- Strategy: Direct execution (no planning needed)
Executing...
- Reading: app/components/Navigation.tsx
- Analyzing: Current padding values
- Updating: Mobile breakpoint padding from 20px to 12px
- Testing: Visual verification
✅ Complete! (3 minutes)
Changes:
- Updated: app/components/Navigation.tsx (1 file, 3 lines changed)
- Before screenshot: .queue/screenshots/uuid-123/before.png
- After screenshot: .queue/screenshots/uuid-123/after.png
Linear: https://linear.app/unite-hub/issue/UNI-43
Status: Complete → Archived
---
[2/3] Processing: Add dark mode toggle to settings (UNI-46)
- Complexity: medium
- Strategy: Requires planning
- Agent: general
Spawning PLANNER sub-agent...
📋 Plan Created:
1. Create ThemeContext provider with light/dark state
2. Create ThemeToggle component with switch UI
3. Update existing components to read from ThemeContext
4. Add CSS variables for theme colors
5. Persist theme preference to localStorage
✓ Plan approved automatically (medium complexity)
Spawning EXECUTOR sub-agent...
Executing plan...
- Created: lib/theme/ThemeContext.tsx
- Created: components/ThemeToggle.tsx
- Updated: app/layout.tsx (wrap with ThemeProvider)
- Updated: 8 components to use theme colors
- Added: CSS variables in globals.css
- Added: localStorage persistence
Testing dark mode...
✅ Light mode works
✅ Dark mode works
✅ Theme persists on reload
✅ Complete! (12 minutes)
Changes:
- Created: 2 files
- Updated: 10 files
- Total lines: 247 lines changed
Linear: https://linear.app/unite-hub/issue/UNI-46
Status: Complete → Archived
---
[3/3] Processing: Analyze R&D transactions for FY2023-24 (UNI-45)
- Complexity: complex
- Strategy: Specialist review required
- Agent: rnd-tax-specialist
Spawning PLANNER sub-agent (rnd-tax-specialist)...
📋 Plan Created:
1. Fetch all Xero transactions for FY2023-24 (July 1, 2023 - June 30, 2024)
2. Filter for potential R&D expenditure (development, research, consulting)
3. Apply Division 355 four-element test to each transaction
4. Calculate eligible expenditure
5. Calculate R&D tax offset (43.5% for turnover < $20M)
6. Generate compliance report with legislative references
7. Flag transactions requiring further review
Estimated value: $200K-$500K potential refund
⚠️ This is a complex analysis involving significant financial value.
Proceed with execution? [Yes/No]
User: Yes
✓ Approved by user
Spawning EXECUTOR sub-agent (rnd-tax-specialist)...
Executing R&D analysis...
- Fetching Xero transactions (July 1, 2023 - June 30, 2024)...
- Retrieved: 1,247 transactions
- Filtering for potential R&D expenditure...
- Found: 387 potential R&D transactions
Applying Division 355 four-element test...
- Test 1 (New Knowledge): 256 transactions pass
- Test 2 (Outcome Unknown): 198 transactions pass
- Test 3 (Systematic Approach): 167 transactions pass
- Test 4 (Scientific Method): 127 transactions pass
✅ Eligible: 127 transactions
Calculating tax benefit...
- Total eligible expenditure: $293,000
- R&D tax offset (43.5%): $127,455
- Potential refund: $127,455
Generating compliance report...
- Transaction breakdown by category
- Four-element test results per transaction
- Legislative references (Division 355 ITAA 1997)
- Registration deadline: April 30, 2025
- Professional review recommendations
✅ Complete! (18 minutes)
Analysis Summary:
- Transactions analyzed: 1,247
- Eligible R&D transactions: 127
- Eligible expenditure: $293,000
- Tax offset: $127,455
- Confidence: High (90%)
Report saved: .queue/reports/rnd-analysis-fy2023-24.pdf
⚠️ Recommendations:
- Professional review required before submission
- Register with AusIndustry before April 30, 2025
- 15 transactions flagged for further documentation
Linear: https://linear.app/unite-hub/issue/UNI-45
Status: Complete → Archived
---
📊 Session Complete
Processed: 3 items
Succeeded: 3 items (100%)
Failed: 0 items
Total time: 33 minutes
Tokens used: ~18,500 PTS
Queue status:
- Pending: 0 items
- Validated: 0 items
- Processing: 0 items
All items complete! 🎉
Example 2 - Continuous Mode:
User: /workflow process --continuous
Claude: ⚙️ Work Queue Processor Started (Continuous Mode)
Will process items continuously until queue empty or tokens exhausted.
Press Ctrl+C or use /workflow pause to stop gracefully.
---
[1/10] Processing: Fix copy icon overlap (UNI-42)
...
✅ Complete! (2 minutes)
[2/10] Processing: Update form validation (UNI-47)
...
✅ Complete! (8 minutes)
[3/10] Processing: Refactor tax calculation logic (UNI-48)
...
⚙️ Processing... (45% complete)
(Continues until queue empty)
---
📊 Session Complete
Processed: 10 items
Succeeded: 9 items (90%)
Failed: 1 item (10%)
Total time: 87 minutes
Tokens used: ~42,300 PTS
Tokens remaining: ~47,700 PTS
Queue status: Empty
Next: Use /workflow capture to add more ideas
Options:
--continuous - Run until queue empty or tokens exhausted--limit <N> - Process maximum N items then stop--priority <P> - Only process items with specific priority (P0/P1/P2/P3)--agent <name> - Only process items assigned to specific agentError Handling:
When an item fails:
❌ Execution failed: Add dark mode toggle (UNI-46)
Error: Component ThemeContext.tsx already exists
Retry count: 1/3
Action:
- Marked as 'failed' with error message
- Updated Linear issue to 'Canceled'
- Added comment to Linear with error details
The work loop will continue with the next item.
To retry failed items, use /workflow retry
When token budget is low:
⚠️ Token budget low (8,500 PTS remaining)
Action: Pausing work loop gracefully
Status: Saved processor state
Items processed this session: 8
Items remaining in queue: 2
To resume: /workflow process
Performance Targets:
| Metric | Target |
|---|---|
| Simple item execution | < 5 minutes |
| Medium item execution | < 15 minutes |
| Complex item execution | < 30 minutes |
| Queue throughput | 10-25 items per 90 minutes |
| Success rate | > 95% |
| Token usage per item | 50-500 PTS |
/workflow statusShows detailed breakdown of current queue status, including what's currently processing, items in each state, and recent completions.
Aliases: status, queue, progress
Process:
Implementation:
import { getQueueStatistics, getQueueItemsByStatus } from '@/lib/queue/work-queue-manager';
// Get statistics
const stats = await getQueueStatistics();
// Get currently processing
const processingItems = await getQueueItemsByStatus('processing', 1);
const currentItem = processingItems[0] || null;
// Get recent completions
const recentCompletions = await getQueueItemsByStatus('complete', 5);
// Display status
console.log('📊 Queue Status\n');
if (currentItem) {
console.log('Currently processing:');
console.log(`- ${currentItem.title} (${currentItem.linear_issue_identifier})`);
console.log(`- Progress: Executing...`);
console.log(`- Time elapsed: ${calculateElapsed(currentItem.updated_at)}\n`);
}
console.log('Queue breakdown:');
console.log(`├─ Pending: ${stats.pending_count} items`);
console.log(`├─ Validating: ${stats.validating_count} items`);
console.log(`├─ Validated: ${stats.validated_count} items (ready to process)`);
console.log(`├─ Processing: ${stats.processing_count} items`);
console.log(`├─ Complete: ${stats.complete_count} items`);
console.log(`├─ Failed: ${stats.failed_count} items`);
console.log(`└─ Archived: ${stats.archived_count} items\n`);
Example Output:
User: /workflow status
Claude: 📊 Queue Status
Currently processing:
- Analyze R&D transactions for FY2023-24 (UNI-45)
- Progress: Applying Division 355 test (67% complete)
- Time elapsed: 12 minutes
- Agent: rnd-tax-specialist
Queue breakdown:
├─ Pending: 2 items (awaiting validation)
├─ Validating: 0 items
├─ Validated: 3 items (ready to process)
├─ Processing: 1 item (currently executing)
├─ Complete: 25 items
├─ Failed: 1 item
└─ Archived: 22 items
Recently completed:
1. Fix navigation header padding (UNI-43) - 15 mins ago ✅
2. Update form validation (UNI-47) - 23 mins ago ✅
3. Refactor tax calculation (UNI-48) - 45 mins ago ✅
4. Add user authentication (UNI-49) - 1 hour ago ✅
5. Fix database migration (UNI-50) - 2 hours ago ✅
Session statistics:
- Items processed today: 8
- Success rate: 87.5%
- Average execution time: 9.3 minutes
- Total token usage: 24,500 PTS
Estimated time for validated items: ~45 minutes
Next in queue:
1. Add dark mode toggle (UNI-46) - P3 - Medium complexity
2. Fix copy icon overlap (UNI-51) - P2 - Simple
3. Create export functionality (UNI-52) - P1 - Complex
To process validated items: /workflow process
To see detailed statistics: /workflow stats
When to use:
/workflow statsShows detailed performance statistics and metrics for the idea intake workflow system.
Aliases: stats, metrics, performance, analytics
Process:
Implementation:
import { getQueueStatistics, getQueueItemsByStatus } from '@/lib/queue/work-queue-manager';
import { calculateValidationStats } from '@/lib/queue/pm-validator';
// Get statistics
const stats = await getQueueStatistics();
// Get all validated items for PM stats
const validatedItems = await getQueueItemsByStatus('validated');
const pmStats = calculateValidationStats(validatedItems);
// Calculate success rate
const totalProcessed = stats.complete_count + stats.failed_count;
const successRate = totalProcessed > 0
? (stats.complete_count / totalProcessed * 100).toFixed(1)
: 0;
// Display stats
console.log('📊 Workflow Statistics\n');
console.log('Overall Performance:');
console.log(`- Total items processed: ${totalProcessed}`);
console.log(`- Success rate: ${successRate}%`);
console.log(`- Average execution time: ${stats.avg_execution_time_seconds}s`);
console.log(`- Total token usage: ${stats.total_token_usage} PTS\n`);
console.log('By Complexity:');
console.log(`- Simple: ${pmStats.by_complexity.simple} items`);
console.log(`- Medium: ${pmStats.by_complexity.medium} items`);
console.log(`- Complex: ${pmStats.by_complexity.complex} items\n`);
Example Output:
User: /workflow stats
Claude: 📊 Workflow Statistics
Overall Performance:
- Total items processed: 127
- Success rate: 96.8% (123 succeeded, 4 failed)
- Average execution time: 8.3 minutes
- Total token usage: 45,230 PTS
- Average tokens per item: 356 PTS
Status Breakdown:
├─ Pending: 3 items (2.3%)
├─ Validating: 0 items (0%)
├─ Validated: 2 items (1.6%)
├─ Processing: 1 item (0.8%)
├─ Complete: 119 items (93.7%)
├─ Failed: 2 items (1.6%)
└─ Archived: 115 items (90.6%)
By Complexity:
├─ Simple: 47 items (37.0%) - Avg time: 3.2 mins
├─ Medium: 58 items (45.7%) - Avg time: 9.1 mins
└─ Complex: 22 items (17.3%) - Avg time: 21.4 mins
By Priority:
├─ P0 (Critical): 2 items (1.6%)
├─ P1 (High): 28 items (22.0%)
├─ P2 (Medium): 74 items (58.3%)
└─ P3 (Low): 23 items (18.1%)
By Assigned Agent:
├─ general: 67 items (52.8%)
├─ rnd-tax-specialist: 18 items (14.2%)
├─ deduction-optimizer: 12 items (9.4%)
├─ xero-auditor: 11 items (8.7%)
├─ loss-recovery-agent: 8 items (6.3%)
├─ trust-distribution-analyzer: 5 items (3.9%)
└─ Other specialists: 6 items (4.7%)
Validation Statistics:
- Average feasibility score: 82/100
- Average confidence: 78/100
- Duplicate detection rate: 12% (15 duplicates found)
Execution Strategy:
- Direct execution: 47 items (37.0%)
- Requires planning: 58 items (45.7%)
- Specialist review: 22 items (17.3%)
Recent Trends (Last 24 Hours):
- Items captured: 15
- Items validated: 12
- Items processed: 10
- Success rate: 100%
- Average time per item: 7.2 minutes
Time Distribution:
- 0-5 minutes: 47 items (37.0%)
- 5-10 minutes: 38 items (29.9%)
- 10-15 minutes: 20 items (15.7%)
- 15-30 minutes: 18 items (14.2%)
- 30+ minutes: 4 items (3.1%)
Token Distribution:
- 0-100 PTS: 52 items (40.9%)
- 100-500 PTS: 61 items (48.0%)
- 500-1000 PTS: 12 items (9.4%)
- 1000+ PTS: 2 items (1.6%)
Failed Items Analysis:
- Database connection: 1 item
- User canceled: 1 item
- Total failed: 2 items (1.6%)
Top Performing Categories:
1. UI/Frontend changes: 98% success rate (3.8 min avg)
2. Tax analysis: 95% success rate (18.2 min avg)
3. Database changes: 87% success rate (12.4 min avg)
Recommendations:
✅ High capture rate - system is being used effectively
✅ Excellent success rate (96.8%) - execution quality is strong
⚠️ 12% duplicate rate - consider improving capture descriptions
✅ Token usage is efficient (356 PTS avg per item)
When to use:
┌─────────────────────────────────────────────────────────────┐
│ /workflow Command │
│ (Orchestrator Skill) │
└───────────────┬─────────────────────────────────────────────┘
│
├─ /workflow capture
│ └─ Uses: lib/queue/work-queue-manager.ts
│ └─ Function: addToQueue()
│
├─ /workflow validate
│ └─ Uses: lib/queue/pm-validator.ts
│ └─ Function: validateQueueItem()
│ └─ Function: checkForDuplicates()
│ └─ Uses: lib/linear/api-client.ts
│
├─ /workflow process
│ └─ Uses: lib/queue/work-queue-manager.ts
│ └─ Function: getNextValidatedItem()
│ └─ Function: markAsProcessing()
│ └─ Function: markAsComplete()
│ └─ Function: markAsFailed()
│ └─ Uses: lib/linear/api-client.ts
│
├─ /workflow status
│ └─ Uses: lib/queue/work-queue-manager.ts
│ └─ Function: getQueueStatistics()
│ └─ Function: getQueueItemsByStatus()
│
└─ /workflow stats
└─ Uses: lib/queue/work-queue-manager.ts
└─ Function: getQueueStatistics()
└─ Uses: lib/queue/pm-validator.ts
└─ Function: calculateValidationStats()
Database (Supabase):
work_queue (created by migration 20260129_create_work_queue.sql)lib/supabase/server.tsget_next_pending_queue_item() - Row-level locking with SKIP LOCKEDget_next_validated_queue_item() - Priority-sorted with lockingget_queue_statistics() - Aggregated statisticsQueue Manager (lib/queue/work-queue-manager.ts):
addToQueue() - Add new itemsgetNextPendingItem() - Fetch for validationgetNextValidatedItem() - Fetch for executionmarkAsValidating(), markAsValidated(), markAsProcessing(), markAsComplete(), markAsFailed() - Status transitionsarchiveQueueItem() - Archive completed itemsupdateLinearMetadata() - Store Linear issue referencesgetQueueStatistics() - Performance metricsgetQueueItemsByStatus() - Filter by statustimeoutStuckItems() - Safety mechanism for stuck itemsPM Validator (lib/queue/pm-validator.ts):
validateQueueItem() - Main validation pipelineassessFeasibility() - Feasibility scoring (0-100)assessComplexity() - Complexity detection (simple/medium/complex)assignPriority() - Priority assignment (P0/P1/P2/P3)determineAssignedAgent() - Agent routing logicdetermineExecutionStrategy() - Execution strategy (direct/planning/review)checkForDuplicates() - Linear duplicate detectioncalculateValidationStats() - Validation metricsLinear Integration (lib/linear/api-client.ts):
createIssue() - Create Linear issue from queue itemupdateIssue() - Update issue statussearchIssues() - Search for duplicatesaddComment() - Add comments to issuesgetStateIdByType() - Get workflow state IDsLinear Utilities (lib/linear/graphql-queries.ts):
buildIssueFromQueue() - Convert queue item to Linear issue formatextractSearchKeywords() - Extract keywords for duplicate searchfindPotentialDuplicates() - Similarity matchingmapQueueStatusToLinearState() - Status mappingCapture Flow:
User message
→ Parse and extract ideas
→ Auto-detect type
→ Generate title
→ addToQueue() → Supabase work_queue
→ Return confirmation
Validation Flow:
Pending items
→ getQueueItemsByStatus('pending')
→ For each item:
→ markAsValidating()
→ validateQueueItem()
→ assessFeasibility()
→ assessComplexity()
→ checkForDuplicates() → Linear API
→ assignPriority()
→ determineAssignedAgent()
→ determineExecutionStrategy()
→ markAsValidated()
→ Create Linear issue if not duplicate
→ Return summary
Processing Flow:
Validated items
→ getNextValidatedItem() (with row locking)
→ markAsProcessing()
→ Create Linear issue if needed
→ Route based on complexity:
→ Simple: executeSimpleTask()
→ Medium: spawnPlannerSubAgent() → spawnExecutorSubAgent()
→ Complex: spawnPlannerSubAgent() → askUserForApproval() → spawnExecutorSubAgent()
→ markAsComplete() or markAsFailed()
→ updateIssue() → Linear API
→ archiveQueueItem() (if complete)
→ Repeat
Database Errors:
try {
const item = await addToQueue({ ... });
return { status: 'success', item };
} catch (error) {
console.error('Failed to add item to queue:', error);
return {
status: 'error',
error: error.message,
suggestions: [
'Check SUPABASE_SERVICE_ROLE_KEY is configured',
'Verify Supabase project is running',
'Run migration: supabase migration up'
]
};
}
Linear API Errors:
try {
const duplicateCheck = await checkForDuplicates(item);
} catch (error) {
console.warn('Duplicate check failed, continuing without:', error);
// Graceful degradation - assume not duplicate
duplicateCheck = { isDuplicate: false };
}
Execution Failures:
try {
const result = await executeQueueItem(item);
await markAsComplete(item.id, result);
} catch (error) {
console.error(`Execution failed for ${item.id}:`, error);
await markAsFailed(item.id, error.message);
// Update Linear
await updateIssue(item.linear_issue_id, {
stateId: await getStateIdByType('canceled'),
});
await addComment(item.linear_issue_id,
`Execution failed: ${error.message}\n\nMarked as failed in queue.`
);
// Continue to next item (don't stop loop)
continue;
}
Token Exhaustion:
const estimatedRemainingTokens = calculateRemainingTokens();
if (estimatedRemainingTokens < MIN_TOKEN_THRESHOLD) {
console.warn('Token budget low, stopping gracefully');
await saveProcessorState({
lastProcessedId: item.id,
itemsProcessed: count,
timestamp: new Date().toISOString(),
});
return {
status: 'paused',
reason: 'token_budget_low',
itemsProcessed: count,
message: 'Work loop paused due to low token budget. Restart to continue.',
};
}
Environment Variables:
# Database (Required)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Linear Integration (Required for validation/processing)
LINEAR_API_KEY=lin_api_...
LINEAR_TEAM_ID=UNI
LINEAR_PROJECT_ID=project-id-optional
# Queue Configuration (Optional)
QUEUE_BATCH_SIZE=10 # Max items per validation/processing session
QUEUE_POLL_INTERVAL_MS=5000 # How often to check for new items
QUEUE_MAX_RETRIES=3 # Max retries on failure
QUEUE_TIMEOUT_HOURS=2 # Mark as failed after N hours in 'processing'
MIN_TOKEN_THRESHOLD=10000 # Stop processing if tokens < this
Rate Limiting:
Database Access:
SUPABASE_SERVICE_ROLE_KEY (bypasses RLS)Sensitive Data Handling:
Prohibited Actions (never executed, even if in queue):
Database Queries:
FOR UPDATE SKIP LOCKED) to prevent race conditionsstatus column for fast filteringcreated_at for queue orderingpriority for priority-based processingCaching:
Batching:
Token Management:
--text optionIssue: "Failed to add item to queue: Database connection failed"
Solution:
SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are configuredsupabase migration upIssue: "Duplicate check failed, continuing without"
Solution:
LINEAR_API_KEY is configuredIssue: "Execution failed: Component already exists"
Solution:
/workflow retry to retry failed itemsIssue: "Token budget low, stopping gracefully"
Solution:
/workflow process to resume--limitIssue: "No items in queue" when expecting items
Solution:
/workflow status/workflow validate to validate pending items firstIssue: Items stuck in 'processing' status
Solution:
timeoutStuckItems() function manuallyOverride automatic agent assignment:
import { updateQueueItem } from '@/lib/queue/work-queue-manager';
// Force specific agent
await updateQueueItem(itemId, {
assigned_agent: 'rnd-tax-specialist',
priority: 'P0',
});
import { getQueueItemsByStatus, updateQueueItem } from '@/lib/queue/work-queue-manager';
// Get all failed items
const failedItems = await getQueueItemsByStatus('failed');
// Reset to validated for retry
for (const item of failedItems) {
await updateQueueItem(item.id, {
status: 'validated',
error_message: null,
error_count: 0,
});
}
import { archiveOldFailedItems } from '@/lib/queue/work-queue-manager';
// Archive failed items older than 30 days
const archivedCount = await archiveOldFailedItems(30);
console.log(`Archived ${archivedCount} old failed items`);
import { timeoutStuckItems } from '@/lib/queue/work-queue-manager';
// Timeout items stuck in 'processing' for > 2 hours
const timedOutCount = await timeoutStuckItems(2);
console.log(`Timed out ${timedOutCount} stuck items`);
Queue items can trigger Xero data fetching:
// Example: R&D analysis queue item
const item = await addToQueue({
title: 'Analyze R&D transactions for FY2023-24',
description: 'Review all Xero transactions for R&D eligibility',
queue_item_type: 'feature',
payload: {
financial_year: 'FY2023-24',
start_date: '2023-07-01',
end_date: '2024-06-30',
analysis_type: 'rnd',
},
});
// Processing will route to rnd-tax-specialist
// Agent will fetch Xero data automatically
Complex tax questions can be queued:
const item = await addToQueue({
title: 'Research Division 7A loan repayment requirements',
description: 'Client has $150K shareholder loan, need repayment schedule',
queue_item_type: 'client_request',
payload: {
loan_amount: 150000,
client_id: 'client-123',
legislation: 'Division 7A ITAA 1936',
},
});
// Processing will route to loss-recovery-agent
// Agent will research legislation and calculate repayments
Queue items automatically sync with Linear:
Queue data can feed into reports:
import { getQueueStatistics } from '@/lib/queue/work-queue-manager';
import { calculateValidationStats } from '@/lib/queue/pm-validator';
// Generate weekly report
const stats = await getQueueStatistics();
const validationStats = calculateValidationStats(validatedItems);
const report = {
week: getCurrentWeek(),
items_processed: stats.complete_count,
success_rate: (stats.complete_count / (stats.complete_count + stats.failed_count) * 100),
avg_execution_time: stats.avg_execution_time_seconds,
by_complexity: validationStats.by_complexity,
by_priority: validationStats.by_priority,
};
// Save to reports table or send to stakeholders
/workflow command interfacelib/queue/work-queue-manager.ts - Queue operationslib/queue/pm-validator.ts - Validation logiclib/linear/api-client.ts - Linear integrationlib/linear/graphql-queries.ts - Linear utilitieslib/supabase/server.ts - Database clientsupabase/migrations/20260129_create_work_queue.sql - Database schemaLast Updated: 2026-01-29 Version: 2.0.0 Author: Matt Maher Maintainer: Claude Code Agent Fleet