opentasks 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +218 -49
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +451 -15
- package/dist/cli.js.map +1 -1
- package/dist/client/client.d.ts +54 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +148 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/core/discover.d.ts.map +1 -1
- package/dist/core/discover.js +7 -2
- package/dist/core/discover.js.map +1 -1
- package/dist/core/hash.d.ts.map +1 -1
- package/dist/core/hash.js +7 -0
- package/dist/core/hash.js.map +1 -1
- package/dist/core/id.d.ts +1 -1
- package/dist/core/id.d.ts.map +1 -1
- package/dist/core/id.js +2 -0
- package/dist/core/id.js.map +1 -1
- package/dist/core/worktree.js +4 -4
- package/dist/core/worktree.js.map +1 -1
- package/dist/daemon/events.d.ts +82 -0
- package/dist/daemon/events.d.ts.map +1 -0
- package/dist/daemon/events.js +71 -0
- package/dist/daemon/events.js.map +1 -0
- package/dist/daemon/flush.d.ts.map +1 -1
- package/dist/daemon/flush.js +12 -2
- package/dist/daemon/flush.js.map +1 -1
- package/dist/daemon/health-counters.d.ts +38 -0
- package/dist/daemon/health-counters.d.ts.map +1 -0
- package/dist/daemon/health-counters.js +42 -0
- package/dist/daemon/health-counters.js.map +1 -0
- package/dist/daemon/idempotency.d.ts +50 -0
- package/dist/daemon/idempotency.d.ts.map +1 -0
- package/dist/daemon/idempotency.js +104 -0
- package/dist/daemon/idempotency.js.map +1 -0
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +1 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/ipc.d.ts +32 -2
- package/dist/daemon/ipc.d.ts.map +1 -1
- package/dist/daemon/ipc.js +54 -3
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +302 -8
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/location-state.d.ts +60 -1
- package/dist/daemon/location-state.d.ts.map +1 -1
- package/dist/daemon/location-state.js +136 -31
- package/dist/daemon/location-state.js.map +1 -1
- package/dist/daemon/methods/context-files.d.ts.map +1 -1
- package/dist/daemon/methods/context-files.js +4 -3
- package/dist/daemon/methods/context-files.js.map +1 -1
- package/dist/daemon/methods/events.d.ts +22 -0
- package/dist/daemon/methods/events.d.ts.map +1 -0
- package/dist/daemon/methods/events.js +30 -0
- package/dist/daemon/methods/events.js.map +1 -0
- package/dist/daemon/methods/graph.d.ts +7 -0
- package/dist/daemon/methods/graph.d.ts.map +1 -1
- package/dist/daemon/methods/graph.js +24 -14
- package/dist/daemon/methods/graph.js.map +1 -1
- package/dist/daemon/methods/lifecycle.d.ts +16 -0
- package/dist/daemon/methods/lifecycle.d.ts.map +1 -1
- package/dist/daemon/methods/lifecycle.js +3 -1
- package/dist/daemon/methods/lifecycle.js.map +1 -1
- package/dist/daemon/methods/location.js.map +1 -1
- package/dist/daemon/methods/sync.d.ts +113 -0
- package/dist/daemon/methods/sync.d.ts.map +1 -0
- package/dist/daemon/methods/sync.js +158 -0
- package/dist/daemon/methods/sync.js.map +1 -0
- package/dist/daemon/methods/tools.d.ts.map +1 -1
- package/dist/daemon/methods/tools.js +42 -8
- package/dist/daemon/methods/tools.js.map +1 -1
- package/dist/daemon/methods/watch.d.ts +24 -0
- package/dist/daemon/methods/watch.d.ts.map +1 -1
- package/dist/daemon/methods/watch.js +178 -88
- package/dist/daemon/methods/watch.js.map +1 -1
- package/dist/daemon/sessionlog-watcher.d.ts.map +1 -1
- package/dist/daemon/sessionlog-watcher.js +4 -0
- package/dist/daemon/sessionlog-watcher.js.map +1 -1
- package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -1
- package/dist/graph/EdgeTypeRegistry.js +32 -0
- package/dist/graph/EdgeTypeRegistry.js.map +1 -1
- package/dist/graph/FederatedGraph.d.ts.map +1 -1
- package/dist/graph/GraphologyAdapter.d.ts.map +1 -1
- package/dist/graph/GraphologyAdapter.js.map +1 -1
- package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -1
- package/dist/graph/HydratingFederatedGraph.js +1 -1
- package/dist/graph/HydratingFederatedGraph.js.map +1 -1
- package/dist/graph/attempts.d.ts +50 -0
- package/dist/graph/attempts.d.ts.map +1 -0
- package/dist/graph/attempts.js +51 -0
- package/dist/graph/attempts.js.map +1 -0
- package/dist/graph/coordination.d.ts +4 -2
- package/dist/graph/coordination.d.ts.map +1 -1
- package/dist/graph/coordination.js +77 -85
- package/dist/graph/coordination.js.map +1 -1
- package/dist/graph/expansion.d.ts.map +1 -1
- package/dist/graph/expansion.js +1 -1
- package/dist/graph/expansion.js.map +1 -1
- package/dist/graph/git-graph-syncer.d.ts +24 -0
- package/dist/graph/git-graph-syncer.d.ts.map +1 -1
- package/dist/graph/git-graph-syncer.js +111 -26
- package/dist/graph/git-graph-syncer.js.map +1 -1
- package/dist/graph/provider-store.d.ts +12 -1
- package/dist/graph/provider-store.d.ts.map +1 -1
- package/dist/graph/provider-store.js +35 -8
- package/dist/graph/provider-store.js.map +1 -1
- package/dist/graph/query.d.ts.map +1 -1
- package/dist/graph/query.js +18 -2
- package/dist/graph/query.js.map +1 -1
- package/dist/graph/store.d.ts +18 -2
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +43 -0
- package/dist/graph/store.js.map +1 -1
- package/dist/graph/sync.js +1 -1
- package/dist/graph/sync.js.map +1 -1
- package/dist/graph/types.d.ts +9 -1
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/graph/validation.d.ts.map +1 -1
- package/dist/graph/validation.js +20 -2
- package/dist/graph/validation.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/materialization/archiver.d.ts.map +1 -1
- package/dist/materialization/archiver.js.map +1 -1
- package/dist/materialization/snapshot.d.ts.map +1 -1
- package/dist/materialization/snapshot.js +1 -1
- package/dist/materialization/snapshot.js.map +1 -1
- package/dist/materialization/types.d.ts +7 -5
- package/dist/materialization/types.d.ts.map +1 -1
- package/dist/materialization/types.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +308 -11
- package/dist/mcp/server.js.map +1 -1
- package/dist/providers/beads.d.ts.map +1 -1
- package/dist/providers/beads.js +2 -0
- package/dist/providers/beads.js.map +1 -1
- package/dist/providers/claude-tasks.d.ts.map +1 -1
- package/dist/providers/claude-tasks.js.map +1 -1
- package/dist/providers/global.js +1 -1
- package/dist/providers/global.js.map +1 -1
- package/dist/providers/location.d.ts.map +1 -1
- package/dist/providers/location.js.map +1 -1
- package/dist/providers/map-client-factory.d.ts.map +1 -1
- package/dist/providers/map-client-factory.js +1 -1
- package/dist/providers/map-client-factory.js.map +1 -1
- package/dist/providers/map-connector.js +1 -1
- package/dist/providers/map-connector.js.map +1 -1
- package/dist/providers/map-event-bridge.d.ts.map +1 -1
- package/dist/providers/map-event-bridge.js +1 -0
- package/dist/providers/map-event-bridge.js.map +1 -1
- package/dist/providers/map.d.ts.map +1 -1
- package/dist/providers/map.js +5 -2
- package/dist/providers/map.js.map +1 -1
- package/dist/providers/native.d.ts.map +1 -1
- package/dist/providers/native.js +21 -8
- package/dist/providers/native.js.map +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/sudocode.d.ts.map +1 -1
- package/dist/providers/sudocode.js +5 -11
- package/dist/providers/sudocode.js.map +1 -1
- package/dist/providers/traits/Reconcilable.d.ts.map +1 -1
- package/dist/providers/traits/TaskManageable.d.ts +15 -1
- package/dist/providers/traits/TaskManageable.d.ts.map +1 -1
- package/dist/providers/traits/TaskManageable.js +26 -0
- package/dist/providers/traits/TaskManageable.js.map +1 -1
- package/dist/providers/traits/Watchable.d.ts +6 -0
- package/dist/providers/traits/Watchable.d.ts.map +1 -1
- package/dist/providers/traits/Watchable.js.map +1 -1
- package/dist/providers/types.d.ts +1 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/schema/edges.d.ts +5 -1
- package/dist/schema/edges.d.ts.map +1 -1
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/nodes.d.ts +55 -2
- package/dist/schema/nodes.d.ts.map +1 -1
- package/dist/schema/storage.d.ts +2 -0
- package/dist/schema/storage.d.ts.map +1 -1
- package/dist/schema/validation.d.ts +6 -2
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +18 -1
- package/dist/schema/validation.js.map +1 -1
- package/dist/sessionlog/agent/registry.js.map +1 -1
- package/dist/sessionlog/agent/session-types.d.ts.map +1 -1
- package/dist/sessionlog/agent/types.d.ts.map +1 -1
- package/dist/sessionlog/commands/clean.js +1 -1
- package/dist/sessionlog/commands/clean.js.map +1 -1
- package/dist/sessionlog/commands/disable.d.ts.map +1 -1
- package/dist/sessionlog/commands/disable.js.map +1 -1
- package/dist/sessionlog/commands/doctor.js +1 -1
- package/dist/sessionlog/commands/doctor.js.map +1 -1
- package/dist/sessionlog/commands/enable.js +1 -1
- package/dist/sessionlog/commands/enable.js.map +1 -1
- package/dist/sessionlog/commands/resume.js +1 -1
- package/dist/sessionlog/commands/resume.js.map +1 -1
- package/dist/sessionlog/commands/rewind.d.ts.map +1 -1
- package/dist/sessionlog/commands/rewind.js +1 -1
- package/dist/sessionlog/commands/rewind.js.map +1 -1
- package/dist/sessionlog/commands/status.d.ts.map +1 -1
- package/dist/sessionlog/commands/status.js.map +1 -1
- package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -1
- package/dist/sessionlog/hooks/lifecycle.js +3 -3
- package/dist/sessionlog/hooks/lifecycle.js.map +1 -1
- package/dist/sessionlog/security/redaction.js +1 -1
- package/dist/sessionlog/security/redaction.js.map +1 -1
- package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -1
- package/dist/sessionlog/store/checkpoint-store.js +2 -2
- package/dist/sessionlog/store/checkpoint-store.js.map +1 -1
- package/dist/sessionlog/store/native-store.d.ts.map +1 -1
- package/dist/sessionlog/store/native-store.js.map +1 -1
- package/dist/sessionlog/store/session-store.d.ts.map +1 -1
- package/dist/sessionlog/store/session-store.js +1 -1
- package/dist/sessionlog/store/session-store.js.map +1 -1
- package/dist/sessionlog/strategy/attribution.js +2 -2
- package/dist/sessionlog/strategy/attribution.js.map +1 -1
- package/dist/sessionlog/strategy/common.d.ts +1 -1
- package/dist/sessionlog/strategy/common.d.ts.map +1 -1
- package/dist/sessionlog/strategy/common.js +3 -3
- package/dist/sessionlog/strategy/common.js.map +1 -1
- package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -1
- package/dist/sessionlog/strategy/content-overlap.js +1 -1
- package/dist/sessionlog/strategy/content-overlap.js.map +1 -1
- package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -1
- package/dist/sessionlog/strategy/manual-commit.js +6 -16
- package/dist/sessionlog/strategy/manual-commit.js.map +1 -1
- package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -1
- package/dist/sessionlog/utils/preview-rewind.js +1 -1
- package/dist/sessionlog/utils/preview-rewind.js.map +1 -1
- package/dist/sessionlog/utils/trailers.d.ts.map +1 -1
- package/dist/sessionlog/utils/trailers.js +0 -1
- package/dist/sessionlog/utils/trailers.js.map +1 -1
- package/dist/storage/interface.d.ts +64 -0
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/interface.js.map +1 -1
- package/dist/storage/jsonl.js +2 -2
- package/dist/storage/jsonl.js.map +1 -1
- package/dist/storage/sqlite-schema.d.ts +8 -2
- package/dist/storage/sqlite-schema.d.ts.map +1 -1
- package/dist/storage/sqlite-schema.js +10 -1
- package/dist/storage/sqlite-schema.js.map +1 -1
- package/dist/storage/sqlite.d.ts +16 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +134 -2
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/tools/link.js +1 -1
- package/dist/tools/link.js.map +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +8 -29
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +115 -5
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/types.d.ts +84 -3
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +44 -0
- package/dist/version.js.map +1 -0
- package/package.json +32 -7
- package/skills/opentasks/SKILL.md +226 -0
- package/skills/opentasks/dependency-management.md +119 -0
- package/skills/opentasks/feedback-and-review.md +100 -0
- package/skills/opentasks/linking-external-data.md +103 -0
- package/skills/opentasks/spec-to-implementation.md +171 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Spec to Implementation
|
|
2
|
+
|
|
3
|
+
Full lifecycle: create a context, break into issues, set up dependencies, track to completion.
|
|
4
|
+
|
|
5
|
+
## Native Workflow
|
|
6
|
+
|
|
7
|
+
### 1. Create context
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
opentasks create --type context \
|
|
11
|
+
--title "OAuth2 authentication for API" \
|
|
12
|
+
--content "## Requirements\n\n- Google OAuth2 with PKCE\n- GitHub OAuth2\n- Token refresh\n- Session management" \
|
|
13
|
+
--status active --tags auth --priority 1
|
|
14
|
+
# → { id: "c-a2b3" }
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 2. Create tasks
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
opentasks create --type task --title "Set up OAuth provider config" --status open --tags auth --priority 1
|
|
21
|
+
# → t-x7k9
|
|
22
|
+
|
|
23
|
+
opentasks create --type task --title "Implement Google OAuth login" --status open --tags auth --priority 1
|
|
24
|
+
# → t-m4n5
|
|
25
|
+
|
|
26
|
+
opentasks create --type task --title "Implement GitHub OAuth login" --status open --tags auth --priority 2
|
|
27
|
+
# → t-p6q7
|
|
28
|
+
|
|
29
|
+
opentasks create --type task --title "Token refresh and sessions" --status open --tags auth --priority 2
|
|
30
|
+
# → t-r8s9
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 3. Link issues to spec
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
opentasks link --from t-x7k9 --to c-a2b3 --type implements
|
|
37
|
+
opentasks link --from t-m4n5 --to c-a2b3 --type implements
|
|
38
|
+
opentasks link --from t-p6q7 --to c-a2b3 --type implements
|
|
39
|
+
opentasks link --from t-r8s9 --to c-a2b3 --type implements
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 4. Set up dependencies
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
opentasks link --from t-x7k9 --to t-m4n5 --type blocks # config before Google
|
|
46
|
+
opentasks link --from t-x7k9 --to t-p6q7 --type blocks # config before GitHub
|
|
47
|
+
opentasks link --from t-m4n5 --to t-r8s9 --type blocks # Google before sessions
|
|
48
|
+
opentasks link --from t-p6q7 --to t-r8s9 --type blocks # GitHub before sessions
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 5. Execute with ready queries
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
opentasks query '{"ready": {}}'
|
|
55
|
+
# → [t-x7k9] (only config is unblocked)
|
|
56
|
+
|
|
57
|
+
# Work on it
|
|
58
|
+
opentasks update t-x7k9 --status in_progress
|
|
59
|
+
# ... do work ...
|
|
60
|
+
opentasks update t-x7k9 --status closed
|
|
61
|
+
|
|
62
|
+
# Query again
|
|
63
|
+
opentasks query '{"ready": {}}'
|
|
64
|
+
# → [t-m4n5, t-p6q7] (both unblocked, parallelizable)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 6. Leave implementation feedback
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
opentasks annotate '{"targetId":"c-a2b3","fromId":"t-m4n5","create":{"content":"Google OAuth implemented with PKCE. Requires access_type=offline for refresh tokens.","type":"comment","anchor":{"text":"Google OAuth2 with PKCE"}}}'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 7. Check progress
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# All tasks of the context
|
|
77
|
+
opentasks query '{"tasks": {"specId": "c-a2b3"}}'
|
|
78
|
+
|
|
79
|
+
# Remaining blockers for sessions issue
|
|
80
|
+
opentasks query '{"blockers": {"nodeId": "t-r8s9", "activeOnly": true}}'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## File-Backed Context Workflow (MCP)
|
|
84
|
+
|
|
85
|
+
When the spec already exists as a file in the repo (design doc, architecture spec, etc.), reference it directly instead of duplicating content.
|
|
86
|
+
|
|
87
|
+
### 1. Create file-backed context
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
// MCP: create_context
|
|
91
|
+
{
|
|
92
|
+
"title": "Auth Architecture",
|
|
93
|
+
"source": { "type": "file", "path": "docs/auth-architecture.md" },
|
|
94
|
+
"tags": ["auth"]
|
|
95
|
+
}
|
|
96
|
+
// → { id: "c-a2b3", metadata: { context_file: true, context_file_path: "docs/auth-architecture.md", ... } }
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
No content is copied — just a pointer to the file with a content hash for drift detection.
|
|
100
|
+
|
|
101
|
+
### 2. Reference key implementation files
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
// MCP: create_context
|
|
105
|
+
{
|
|
106
|
+
"source": { "type": "file", "path": "src/auth/middleware.ts" },
|
|
107
|
+
"tags": ["auth"]
|
|
108
|
+
}
|
|
109
|
+
// → { id: "c-m1n2" }
|
|
110
|
+
|
|
111
|
+
// MCP: create_context — snippet for a specific function
|
|
112
|
+
{
|
|
113
|
+
"title": "Token validation",
|
|
114
|
+
"source": { "type": "snippet", "path": "src/auth/middleware.ts", "startLine": 42, "endLine": 58 },
|
|
115
|
+
"tags": ["auth"]
|
|
116
|
+
}
|
|
117
|
+
// → { id: "c-s3n4" }
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 3. Create tasks and link to context
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
// MCP: create_task
|
|
124
|
+
{ "title": "Add JWT refresh tokens", "status": "open", "tags": ["auth"] }
|
|
125
|
+
// → { id: "t-x7k9" }
|
|
126
|
+
|
|
127
|
+
// MCP: link
|
|
128
|
+
{ "fromId": "t-x7k9", "toId": "c-a2b3", "type": "implements" }
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 4. Later — resolve context with drift detection
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
// MCP: get_context — check if spec has changed
|
|
135
|
+
{ "id": "c-a2b3", "resolve": true }
|
|
136
|
+
// → { ..., _resolved: { content: "# Auth Architecture\n...", drifted: true, ... } }
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
If `drifted: true`, the file has changed since the context was created. The agent can re-read the spec and decide if the task needs updating.
|
|
140
|
+
|
|
141
|
+
### 5. Re-pin after changes
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
// MCP: update_context — sync to current HEAD
|
|
145
|
+
{ "id": "c-a2b3", "sync": true }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 6. Batch drift check
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
// MCP: list_contexts — check all file-backed contexts at once
|
|
152
|
+
{ "filesOnly": true, "checkDrift": true }
|
|
153
|
+
// → each item has _drift: { drifted, currentCommit, capturedCommit, ... }
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Cross-System Workflow
|
|
157
|
+
|
|
158
|
+
When context and tasks live in different systems, OpenTasks provides the graph layer between them.
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Taskmaster spec + Beads issue
|
|
162
|
+
opentasks link --from "beads://./bd-x7k9" --to "taskmaster://./auth-prd" --type implements
|
|
163
|
+
|
|
164
|
+
# Query tasks across systems
|
|
165
|
+
opentasks query '{"tasks": {"specId": "taskmaster://./auth-prd"}}'
|
|
166
|
+
|
|
167
|
+
# Native issue + Claude subtask
|
|
168
|
+
opentasks link --from "claude://current/t-abc" --to t-x7k9 --type child-of
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
OpenTasks doesn't manage content in external systems. Use their native tools (bd CLI, tm CLI, Claude TaskCreate) for CRUD, then use OpenTasks for cross-system edges.
|