Executing Tasks From Any Source
Overview
The /project:do:task workflow supports both GitHub issues and Basic Memory artifacts through intelligent source detection. This skill explains the dual-source execution pattern.
Core principle: Detect input format → Fetch from appropriate source → Execute unified workflow → Update both channels.
When to Use This Skill
-
Executing tasks from GitHub issues (traditional issue-based workflow)
-
Executing tasks from Basic Memory artifacts (Johnny Decimal format: 5.1.1-task-* )
-
Switching between task sources within the same project
-
Building tools/agents that need to support both task sources
Quick Reference: Source Detection
Input Format Example Source Worktree Name
Issue number 123 or #123
GitHub API feature/123-auth-implementation
Johnny Decimal 5.1.1-task-auth
Basic Memory feature/5.1.1-task-auth
Detection logic:
if [[ $ARGUMENTS =~ ^#?[0-9]+$ ]]; then
GitHub issue - pure digits with optional
ISSUE_NUM=$(echo $ARGUMENTS | tr -d '#') SOURCE="github" elif [[ $ARGUMENTS =~ ^[0-9]+(.[0-9]+)+.* ]]; then
Basic Memory artifact - Johnny Decimal format
ARTIFACT_ID=$ARGUMENTS SOURCE="basicmemory" else echo "Error: Invalid task format. Use GitHub issue (#123) or Johnny Decimal artifact (5.1.1-task-name)" exit 1 fi
GitHub Issue Execution Path
Step 1: Fetch Issue Details
Fetch issue using GitHub CLI
gh issue view $ISSUE_NUM --json title,body,author,labels,assignees,linkedIssues
Extract components:
- Title: Issue headline
- Body: Full description with acceptance criteria
- Author: Original creator
- Labels: Topic tags (feature, bug, etc)
- Assignees: Current assignee
- LinkedIssues: Related/parent issues
Step 2: Worktree Creation
Pass to using-git-worktrees skill:
feature_identifier: "{ISSUE_NUM}-{slug}" Example: "123-add-user-authentication"
Step 3: Status Updates (In-Progress)
Add in-progress label
gh issue edit $ISSUE_NUM --add-label "in-progress"
Add comment
gh issue comment $ISSUE_NUM -b "Implementation started. Tracking in worktree."
Remove ready/todo labels
gh issue edit $ISSUE_NUM --remove-label "ready,todo"
Step 4: Status Updates (Completed)
Update labels
gh issue edit $ISSUE_NUM --remove-label "in-progress" gh issue edit $ISSUE_NUM --add-label "completed"
Add completion comment with PR link
gh issue comment $ISSUE_NUM -b "Completed in PR #{PR_NUMBER}. See changes above."
Basic Memory Artifact Execution Path
Artifact Structure
Tasks in Basic Memory use this structure:
title: "5.1.1-task-user-authentication" folder: "5-tasks" entity_type: "task" entity_metadata: tags: ["authentication", "user-system"] status: "pending" priority: "high" epic_id: "2.1.1-epic-auth-system" dependencies: []
Task: Implement User Authentication
Description
Detailed task description...
Acceptance Criteria
- Criterion 1
- Criterion 2
Dependencies
- depends_on [[2.1.0-epic-auth-system]]
Step 1: Fetch Artifact Details
Use basicmemory_read_note with Johnny Decimal lookup
Tool extracts: title, content, frontmatter (status, epic_id, dependencies)
from 5-tasks folder matching the artifact ID
Frontmatter fields parsed:
- status: "pending" | "in-progress" | "completed"
- epic_id: Parent epic reference (e.g., "2.1.1-epic-auth")
- priority: "high" | "medium" | "low"
- dependencies: List of related artifacts
Step 2: Worktree Creation
Pass to using-git-worktrees skill:
feature_identifier: "{JOHNNY_DECIMAL}-{slug}" Example: "5.1.1-task-user-authentication"
Step 3: Status Updates (In-Progress)
Use basicmemory_edit_note to update frontmatter
basicmemory_edit_note( identifier: "5.1.1-task-auth", operation: "find_replace", find_text: "status: pending", content: "status: in-progress" )
Add implementation note
basicmemory_edit_note( identifier: "5.1.1-task-auth", operation: "append", content: "\n## Implementation Log\n- Started implementation in worktree\n" )
Step 4: Status Updates (Completed)
Update status to completed
basicmemory_edit_note( identifier: "5.1.1-task-auth", operation: "find_replace", find_text: "status: in-progress", content: "status: completed" )
Add PR link to artifact
basicmemory_edit_note( identifier: "5.1.1-task-auth", operation: "append", content: "\n- Completed in PR: https://github.com/repo/pulls/123\n" )
Unified Workflow Steps (Apply to Both Sources)
Once task is fetched from its source, the remaining workflow is identical:
Deep Technical Analysis (Step 2)
-
Extract user story
-
Map acceptance criteria
-
Determine technical scope
-
Check dependencies
-
Consider edge cases
System Impact Assessment (Step 3)
-
Frontend changes needed?
-
Backend changes needed?
-
Database migrations?
-
Testing strategy?
Human Validation Check (Step 4)
-
Stop and ask if architectural decisions needed
-
Stop and ask if security/performance critical
-
Wait for explicit approval
Implementation (Steps 6-12)
-
Design test strategy
-
Plan implementation approach
-
Execute core implementation
-
Run comprehensive tests
-
Update documentation
-
Quality validation
Completion (Steps 13-15)
-
Update task status (source-specific)
-
Create pull request linking to task
-
Monitor code review
-
After merge: update parent issue/epic
Common Patterns
Pattern 1: Check task dependencies before starting
GitHub:
Get linked issues that are blockers
gh issue view $ISSUE_NUM --json linkedIssues --jq '.linkedIssues[] | select(.url | contains("blocked"))'
Basic Memory:
Read the artifact to find depends_on relations
basicmemory_read_note("5.1.1-task-auth")
Check frontmatter: dependencies: [...] or look for "depends_on [[...]]" in content
Pattern 2: Get parent context
GitHub:
Find linked parent issue (PRD/Feature)
gh issue view $ISSUE_NUM --json linkedIssues
| jq '.linkedIssues[] | select(.title | contains("Feature") or contains("PRD"))'
Basic Memory:
Fetch parent epic using epic_id from frontmatter
basicmemory_read_note("2.1.1-epic-auth-system")
Pattern 3: Update related items after completion
GitHub:
Update parent issue with progress
gh issue comment $PARENT_ISSUE_NUM -b "Completed task #{ISSUE_NUM}"
Link completed task to parent
gh issue edit $ISSUE_NUM --add-label "merged"
Basic Memory:
Update parent epic
basicmemory_edit_note( identifier: "2.1.1-epic-auth", operation: "append", content: "\n- Completed: [[5.1.1-task-user-authentication]]\n" )
Error Handling
Invalid Task Format
if [[ ! $ARGUMENTS =~ ^(#?[0-9]+|[0-9]+(.[0-9]+)+.*)$ ]]; then echo "❌ Invalid task format" echo "GitHub issue: 123 or #123" echo "Basic Memory: 5.1.1-task-name" exit 1 fi
GitHub Issue Not Found
if ! gh issue view $ISSUE_NUM 2>/dev/null; then echo "❌ GitHub issue #$ISSUE_NUM not found" echo "Check the issue number and try again" exit 1 fi
Basic Memory Artifact Not Found
if ! basicmemory_read_note($ARTIFACT_ID) 2>/dev/null; then echo "❌ Basic Memory artifact $ARTIFACT_ID not found in 5-tasks/" echo "Check the artifact ID matches Johnny Decimal format: N.N.N-task-*" exit 1 fi
Integration Points
Called by:
-
/project:do:task workflow (main entry point)
-
Agent task execution systems
-
Task queuing systems
Pairs with:
-
using-git-worktrees
-
Creates isolated workspace
-
executing-plans
-
For comprehensive implementation
-
subagent-driven-development
-
For delegated work
-
finishing-a-development-branch
-
For cleanup after completion
Best Practices
-
Always verify task exists before starting workflow
-
Check dependencies before implementing
-
Use consistent worktree naming - helps with resumption
-
Update status in source before creating worktree
-
Document completion in both PR comment and task artifact
-
Keep frontmatter clean - avoid manual formatting in Basic Memory
-
Link related tasks - use relations/dependencies properly
Red Flags
Never:
-
Start implementation without fetching task details first
-
Ignore dependency warnings
-
Proceed with failing tests without asking
-
Forget to update task status when switching sources
-
Mix GitHub and Basic Memory references inconsistently
Always:
-
Detect source format before proceeding
-
Fetch complete task context
-
Verify dependencies before starting
-
Update task status at start and completion
-
Link PR to task in both channels