@jigyasudham/veto 3.1.0 → 3.1.2
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 -21
- package/README.md +633 -627
- package/dist/agents/llm-runner.js +57 -57
- package/dist/cli/statusline.js +2 -2
- package/dist/cli.js +26 -26
- package/dist/memory/decisions.js +1 -1
- package/dist/memory/local.js +144 -144
- package/dist/memory/schema.js +228 -228
- package/dist/memory/sync.js +27 -27
- package/dist/memory/sync.js.map +1 -1
- package/dist/router/implicit-outcomes.js +4 -4
- package/dist/router/learning-updater.js +45 -45
- package/dist/server.js +1 -1
- package/dist/tools/compact.js +3 -3
- package/dist/transcripts/archive.js +5 -5
- package/dist/transcripts/ingest.js +6 -6
- package/dist/transcripts/mapping.js +5 -5
- package/dist/transcripts/pyramid.js +2 -2
- package/dist/transcripts/schema.js +104 -104
- package/dist/transcripts/search.js +3 -3
- package/dist/transcripts/vectors.js +2 -2
- package/package.json +70 -62
- package/server.json +23 -23
- package/dist/skills/development/skill-api-design.d.ts +0 -15
- package/dist/skills/development/skill-api-design.d.ts.map +0 -1
- package/dist/skills/development/skill-api-design.js +0 -313
- package/dist/skills/development/skill-api-design.js.map +0 -1
- package/dist/skills/development/skill-auth.d.ts +0 -15
- package/dist/skills/development/skill-auth.d.ts.map +0 -1
- package/dist/skills/development/skill-auth.js +0 -255
- package/dist/skills/development/skill-auth.js.map +0 -1
- package/dist/skills/development/skill-ci-cd.d.ts +0 -2
- package/dist/skills/development/skill-ci-cd.d.ts.map +0 -1
- package/dist/skills/development/skill-ci-cd.js +0 -2
- package/dist/skills/development/skill-ci-cd.js.map +0 -1
- package/dist/skills/development/skill-crud.d.ts +0 -15
- package/dist/skills/development/skill-crud.d.ts.map +0 -1
- package/dist/skills/development/skill-crud.js +0 -193
- package/dist/skills/development/skill-crud.js.map +0 -1
- package/dist/skills/development/skill-db-schema.d.ts +0 -2
- package/dist/skills/development/skill-db-schema.d.ts.map +0 -1
- package/dist/skills/development/skill-db-schema.js +0 -2
- package/dist/skills/development/skill-db-schema.js.map +0 -1
- package/dist/skills/development/skill-docker.d.ts +0 -2
- package/dist/skills/development/skill-docker.d.ts.map +0 -1
- package/dist/skills/development/skill-docker.js +0 -2
- package/dist/skills/development/skill-docker.js.map +0 -1
- package/dist/skills/development/skill-env-setup.d.ts +0 -2
- package/dist/skills/development/skill-env-setup.d.ts.map +0 -1
- package/dist/skills/development/skill-env-setup.js +0 -2
- package/dist/skills/development/skill-env-setup.js.map +0 -1
- package/dist/skills/development/skill-scaffold.d.ts +0 -15
- package/dist/skills/development/skill-scaffold.d.ts.map +0 -1
- package/dist/skills/development/skill-scaffold.js +0 -299
- package/dist/skills/development/skill-scaffold.js.map +0 -1
- package/dist/skills/intelligence/skill-complexity-score.d.ts +0 -15
- package/dist/skills/intelligence/skill-complexity-score.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-complexity-score.js +0 -66
- package/dist/skills/intelligence/skill-complexity-score.js.map +0 -1
- package/dist/skills/intelligence/skill-cost-track.d.ts +0 -14
- package/dist/skills/intelligence/skill-cost-track.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-cost-track.js +0 -36
- package/dist/skills/intelligence/skill-cost-track.js.map +0 -1
- package/dist/skills/intelligence/skill-learning-loop.d.ts +0 -15
- package/dist/skills/intelligence/skill-learning-loop.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-learning-loop.js +0 -66
- package/dist/skills/intelligence/skill-learning-loop.js.map +0 -1
- package/dist/skills/intelligence/skill-pattern-detect.d.ts +0 -14
- package/dist/skills/intelligence/skill-pattern-detect.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-pattern-detect.js +0 -35
- package/dist/skills/intelligence/skill-pattern-detect.js.map +0 -1
- package/dist/skills/intelligence/skill-rate-watch.d.ts +0 -15
- package/dist/skills/intelligence/skill-rate-watch.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-rate-watch.js +0 -58
- package/dist/skills/intelligence/skill-rate-watch.js.map +0 -1
- package/dist/skills/memory/skill-context-compress.d.ts +0 -15
- package/dist/skills/memory/skill-context-compress.d.ts.map +0 -1
- package/dist/skills/memory/skill-context-compress.js +0 -82
- package/dist/skills/memory/skill-context-compress.js.map +0 -1
- package/dist/skills/memory/skill-cross-sync.d.ts +0 -15
- package/dist/skills/memory/skill-cross-sync.d.ts.map +0 -1
- package/dist/skills/memory/skill-cross-sync.js +0 -88
- package/dist/skills/memory/skill-cross-sync.js.map +0 -1
- package/dist/skills/memory/skill-decision-log.d.ts +0 -15
- package/dist/skills/memory/skill-decision-log.d.ts.map +0 -1
- package/dist/skills/memory/skill-decision-log.js +0 -103
- package/dist/skills/memory/skill-decision-log.js.map +0 -1
- package/dist/skills/memory/skill-session-restore.d.ts +0 -15
- package/dist/skills/memory/skill-session-restore.d.ts.map +0 -1
- package/dist/skills/memory/skill-session-restore.js +0 -39
- package/dist/skills/memory/skill-session-restore.js.map +0 -1
- package/dist/skills/memory/skill-session-save.d.ts +0 -15
- package/dist/skills/memory/skill-session-save.d.ts.map +0 -1
- package/dist/skills/memory/skill-session-save.js +0 -74
- package/dist/skills/memory/skill-session-save.js.map +0 -1
- package/dist/skills/quality/skill-accessibility.d.ts +0 -2
- package/dist/skills/quality/skill-accessibility.d.ts.map +0 -1
- package/dist/skills/quality/skill-accessibility.js +0 -2
- package/dist/skills/quality/skill-accessibility.js.map +0 -1
- package/dist/skills/quality/skill-code-review.d.ts +0 -15
- package/dist/skills/quality/skill-code-review.d.ts.map +0 -1
- package/dist/skills/quality/skill-code-review.js +0 -60
- package/dist/skills/quality/skill-code-review.js.map +0 -1
- package/dist/skills/quality/skill-docs-gen.d.ts +0 -2
- package/dist/skills/quality/skill-docs-gen.d.ts.map +0 -1
- package/dist/skills/quality/skill-docs-gen.js +0 -2
- package/dist/skills/quality/skill-docs-gen.js.map +0 -1
- package/dist/skills/quality/skill-perf-audit.d.ts +0 -2
- package/dist/skills/quality/skill-perf-audit.d.ts.map +0 -1
- package/dist/skills/quality/skill-perf-audit.js +0 -2
- package/dist/skills/quality/skill-perf-audit.js.map +0 -1
- package/dist/skills/quality/skill-security-scan.d.ts +0 -15
- package/dist/skills/quality/skill-security-scan.d.ts.map +0 -1
- package/dist/skills/quality/skill-security-scan.js +0 -67
- package/dist/skills/quality/skill-security-scan.js.map +0 -1
- package/dist/skills/quality/skill-test-suite.d.ts +0 -15
- package/dist/skills/quality/skill-test-suite.d.ts.map +0 -1
- package/dist/skills/quality/skill-test-suite.js +0 -274
- package/dist/skills/quality/skill-test-suite.js.map +0 -1
- package/dist/skills/workflow/skill-deploy.d.ts +0 -2
- package/dist/skills/workflow/skill-deploy.d.ts.map +0 -1
- package/dist/skills/workflow/skill-deploy.js +0 -2
- package/dist/skills/workflow/skill-deploy.js.map +0 -1
- package/dist/skills/workflow/skill-git-workflow.d.ts +0 -2
- package/dist/skills/workflow/skill-git-workflow.d.ts.map +0 -1
- package/dist/skills/workflow/skill-git-workflow.js +0 -2
- package/dist/skills/workflow/skill-git-workflow.js.map +0 -1
- package/dist/skills/workflow/skill-rollback.d.ts +0 -2
- package/dist/skills/workflow/skill-rollback.d.ts.map +0 -1
- package/dist/skills/workflow/skill-rollback.js +0 -2
- package/dist/skills/workflow/skill-rollback.js.map +0 -1
- package/dist/skills/workflow/skill-task-breakdown.d.ts +0 -2
- package/dist/skills/workflow/skill-task-breakdown.d.ts.map +0 -1
- package/dist/skills/workflow/skill-task-breakdown.js +0 -2
- package/dist/skills/workflow/skill-task-breakdown.js.map +0 -1
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// Skill: rate-watch — monitor AI rate limits and trigger platform switches proactively
|
|
2
|
-
export function run(input) {
|
|
3
|
-
return {
|
|
4
|
-
skill: 'rate-watch',
|
|
5
|
-
template: `
|
|
6
|
-
// ── Rate Limit Thresholds ─────────────────────────────────────────────────
|
|
7
|
-
//
|
|
8
|
-
// 0–69% Green zone — normal routing, no action needed
|
|
9
|
-
// 70–89% Warning — Tier 1/2 auto-routes to Gemini/Codex
|
|
10
|
-
// Tier 3 stays on Claude (too important to downgrade)
|
|
11
|
-
// 90%+ Critical — all tasks routed to Gemini/Codex
|
|
12
|
-
// Non-urgent work queued for reset
|
|
13
|
-
//
|
|
14
|
-
// Cross-platform switch (manual):
|
|
15
|
-
//
|
|
16
|
-
// Claude at 90%+ mid-task?
|
|
17
|
-
// 1. Call veto_session_save (capture current state)
|
|
18
|
-
// 2. Note the session ID
|
|
19
|
-
// 3. Open Gemini terminal
|
|
20
|
-
// 4. Call veto_session_restore {session_id}
|
|
21
|
-
// 5. Continue — Gemini has full context
|
|
22
|
-
// Total interruption: under 10 seconds
|
|
23
|
-
//
|
|
24
|
-
// All platforms at limit simultaneously?
|
|
25
|
-
// Check veto_rate_status for reset times
|
|
26
|
-
// Work on tasks that don't need AI (docs, planning, code review checklists)
|
|
27
|
-
// Auto-resumes when first platform resets
|
|
28
|
-
`.trim(),
|
|
29
|
-
checklist: [
|
|
30
|
-
'Call veto_rate_status at the start of long sessions to check headroom',
|
|
31
|
-
'At 70%: start Tier 1/2 tasks on Gemini/Codex proactively instead of waiting for auto-routing',
|
|
32
|
-
'At 80%: save the current session via veto_session_save as a precaution',
|
|
33
|
-
'At 90%: switch platform manually using veto_session_save → veto_session_restore',
|
|
34
|
-
'At 100%: check reset times from veto_rate_status, switch to non-AI tasks until reset',
|
|
35
|
-
'After a platform switch: verify the session restored correctly before continuing',
|
|
36
|
-
'Prefer Gemini for T1/T2 overflow — it has higher rate limits on the free tier',
|
|
37
|
-
],
|
|
38
|
-
patterns: [
|
|
39
|
-
'Proactive switch at 80%: switching before hitting 90% avoids a mid-task interruption',
|
|
40
|
-
'Session save at 70%: ensures context is preserved if a hard limit is hit unexpectedly',
|
|
41
|
-
'Platform diversity: using two platforms in parallel halves the effective rate limit pressure',
|
|
42
|
-
'Tier-based overflow: only T1/T2 overflow — never route T3 to a lower-capability model',
|
|
43
|
-
],
|
|
44
|
-
gotchas: [
|
|
45
|
-
'Switching platforms without saving the session — the receiving platform starts blind',
|
|
46
|
-
'Routing Tier 3 tasks to Gemini Flash or Haiku to avoid rate limits — quality loss is not worth it',
|
|
47
|
-
'Not checking rate status before a long task — hitting the limit mid-migration is high risk',
|
|
48
|
-
'Forgetting that rate limits reset daily at midnight UTC — a limit today may reset in 2 hours',
|
|
49
|
-
],
|
|
50
|
-
resources: [
|
|
51
|
-
'veto_rate_status — current usage % and advisory for all platforms',
|
|
52
|
-
'veto_route_task — routes tasks to the least-loaded platform automatically',
|
|
53
|
-
'veto_session_save — save context before switching platforms',
|
|
54
|
-
'veto_session_restore — restore on the receiving platform',
|
|
55
|
-
],
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=skill-rate-watch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-rate-watch.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-rate-watch.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAKvF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAC,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,uEAAuE;YACvE,8FAA8F;YAC9F,wEAAwE;YACxE,iFAAiF;YACjF,sFAAsF;YACtF,kFAAkF;YAClF,+EAA+E;SAChF;QACD,QAAQ,EAAE;YACR,sFAAsF;YACtF,uFAAuF;YACvF,8FAA8F;YAC9F,uFAAuF;SACxF;QACD,OAAO,EAAE;YACP,sFAAsF;YACtF,mGAAmG;YACnG,4FAA4F;YAC5F,8FAA8F;SAC/F;QACD,SAAS,EAAE;YACT,mEAAmE;YACnE,2EAA2E;YAC3E,6DAA6D;YAC7D,0DAA0D;SAC3D;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-context-compress.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-context-compress.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-context-compress.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA2CD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAuClD"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
// Skill: context-compress — when and how to compress context before model calls
|
|
2
|
-
const TEMPLATE = `
|
|
3
|
-
// ── Context Compression Protocol ─────────────────────────────────────────
|
|
4
|
-
//
|
|
5
|
-
// Apply when token count > 8,000 or before any cross-platform handoff.
|
|
6
|
-
// Target: < 30% of original token count, zero loss of active constraints.
|
|
7
|
-
//
|
|
8
|
-
// Compression tiers:
|
|
9
|
-
//
|
|
10
|
-
// TIER 1 — Keep verbatim (never compress):
|
|
11
|
-
// - Active blockers that require human input
|
|
12
|
-
// - Open decisions that have not been resolved
|
|
13
|
-
// - File paths of files currently being modified
|
|
14
|
-
// - The single next action
|
|
15
|
-
// - Error messages that have not been diagnosed
|
|
16
|
-
//
|
|
17
|
-
// TIER 2 — Compress to 1–3 sentences:
|
|
18
|
-
// - Completed subtasks (collapse to "✓ Implemented X")
|
|
19
|
-
// - Read-back confirmations ("confirmed the file exists")
|
|
20
|
-
// - Resolved blockers ("fixed: dependency conflict — used --legacy-peer-deps")
|
|
21
|
-
// - Prior session context (collapse to a 2-sentence progress summary)
|
|
22
|
-
//
|
|
23
|
-
// TIER 3 — Drop entirely:
|
|
24
|
-
// - Superseded decisions (replaced by a newer ADR)
|
|
25
|
-
// - Files read but not modified and not needed going forward
|
|
26
|
-
// - Exploratory steps that led to dead ends and have been abandoned
|
|
27
|
-
// - Console output that has already been analyzed
|
|
28
|
-
//
|
|
29
|
-
// Compressed context shape:
|
|
30
|
-
{
|
|
31
|
-
"phase": "implementing",
|
|
32
|
-
"completed": ["Brief one-liner per completed subtask"],
|
|
33
|
-
"inProgress": "The exact current subtask in one sentence",
|
|
34
|
-
"remaining": ["Ordered list of remaining subtasks"],
|
|
35
|
-
"activeConstraints": ["Each constraint in one sentence"],
|
|
36
|
-
"openDecisions": [{ "question": "...", "options": ["A", "B"] }],
|
|
37
|
-
"blockers": ["Any current blocker with full detail"],
|
|
38
|
-
"keyFiles": ["Only files still needed going forward"],
|
|
39
|
-
"nextAction": "Single concrete step — unambiguous"
|
|
40
|
-
}
|
|
41
|
-
`.trim();
|
|
42
|
-
export function run(input) {
|
|
43
|
-
return {
|
|
44
|
-
skill: 'context-compress',
|
|
45
|
-
template: TEMPLATE,
|
|
46
|
-
checklist: [
|
|
47
|
-
'Measure the current context token estimate before compressing',
|
|
48
|
-
'Apply compression only when token count exceeds 8,000 or before a platform handoff',
|
|
49
|
-
'Identify Tier 1 items first — these are never touched',
|
|
50
|
-
'Identify Tier 3 items — drop them completely without summarising',
|
|
51
|
-
'For Tier 2 items: write one sentence per completed subtask; the reader does not need the history',
|
|
52
|
-
'Preserve the full text of any active blocker — the receiving agent must understand it in full',
|
|
53
|
-
'Preserve the nextAction as a concrete step, not "continue the task"',
|
|
54
|
-
'After compressing: verify the compressed context is complete by simulating a cold-start agent reading it',
|
|
55
|
-
'Save the compressed context via veto_session_save before switching context',
|
|
56
|
-
'Target a compression ratio of at least 3:1 — if you cannot achieve this, you have too many Tier 1 items',
|
|
57
|
-
'Do not compress active error messages — they need full context to diagnose',
|
|
58
|
-
'Do not summarise open decisions — they need all options preserved',
|
|
59
|
-
],
|
|
60
|
-
patterns: [
|
|
61
|
-
'Tier-based compression: verbatim | summarise | drop — never binary keep/delete',
|
|
62
|
-
'Cold-start test: can a fresh agent read the compressed context and continue the task without questions?',
|
|
63
|
-
'Constraint-first ordering: active constraints at the top, history at the bottom',
|
|
64
|
-
'Forward-only compression: compress backward-looking content, not forward-looking content',
|
|
65
|
-
],
|
|
66
|
-
gotchas: [
|
|
67
|
-
'Compressing active constraints as if they were completed work — causes silent violations in the next session',
|
|
68
|
-
'Summarising blockers instead of preserving them verbatim — the receiving agent gets a vague summary and cannot resolve the blocker',
|
|
69
|
-
'Dropping unresolved error messages — the receiving agent restarts diagnosis from scratch',
|
|
70
|
-
'Targeting a fixed token count without checking completeness — may cut load-bearing context',
|
|
71
|
-
'Not saving the compressed context — the compression is lost on the next context switch',
|
|
72
|
-
'Treating all prior session content as droppable — some prior-session decisions are still active constraints',
|
|
73
|
-
],
|
|
74
|
-
resources: [
|
|
75
|
-
'Use veto_route_task with context= to get the router\'s compression estimate',
|
|
76
|
-
'Use veto_session_save to persist the compressed context',
|
|
77
|
-
'Use veto_memory_store to permanently record key decisions before they are compressed away',
|
|
78
|
-
'The compression target is based on the router\'s context-compressor module heuristics',
|
|
79
|
-
],
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=skill-context-compress.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-context-compress.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-context-compress.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAiBhF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuChB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,+DAA+D;YAC/D,oFAAoF;YACpF,uDAAuD;YACvD,kEAAkE;YAClE,kGAAkG;YAClG,+FAA+F;YAC/F,qEAAqE;YACrE,0GAA0G;YAC1G,4EAA4E;YAC5E,yGAAyG;YACzG,4EAA4E;YAC5E,mEAAmE;SACpE;QACD,QAAQ,EAAE;YACR,gFAAgF;YAChF,yGAAyG;YACzG,iFAAiF;YACjF,0FAA0F;SAC3F;QACD,OAAO,EAAE;YACP,8GAA8G;YAC9G,oIAAoI;YACpI,0FAA0F;YAC1F,4FAA4F;YAC5F,wFAAwF;YACxF,6GAA6G;SAC9G;QACD,SAAS,EAAE;YACT,6EAA6E;YAC7E,yDAAyD;YACzD,2FAA2F;YAC3F,uFAAuF;SACxF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-cross-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-cross-sync.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-cross-sync.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAmDD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqClD"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
// Skill: cross-sync — how to move veto memory between machines using file export/import
|
|
2
|
-
const TEMPLATE = `
|
|
3
|
-
// ── Cross-Machine Memory Transfer ────────────────────────────────────────
|
|
4
|
-
//
|
|
5
|
-
// Veto stores everything in ~/.veto/veto.db (SQLite).
|
|
6
|
-
// To continue work on another machine: export → copy → import.
|
|
7
|
-
//
|
|
8
|
-
// No external services. No accounts. No env vars.
|
|
9
|
-
//
|
|
10
|
-
// ── Step 1: Export on Machine A ───────────────────────────────────────────
|
|
11
|
-
//
|
|
12
|
-
// veto_memory_export
|
|
13
|
-
// → writes to ~/.veto/veto-export.json by default
|
|
14
|
-
// → or specify output_path to write directly to shared storage
|
|
15
|
-
//
|
|
16
|
-
// Example with shared storage:
|
|
17
|
-
// veto_memory_export { output_path: "/Users/you/Dropbox/veto-export.json" }
|
|
18
|
-
//
|
|
19
|
-
// ── Step 2: Copy the file ─────────────────────────────────────────────────
|
|
20
|
-
//
|
|
21
|
-
// Options (pick any):
|
|
22
|
-
// • Dropbox / OneDrive / Google Drive — put output_path in your sync folder
|
|
23
|
-
// • USB drive
|
|
24
|
-
// • scp / rsync over SSH
|
|
25
|
-
// • Email / messaging app
|
|
26
|
-
// • AirDrop (Mac)
|
|
27
|
-
//
|
|
28
|
-
// ── Step 3: Import on Machine B ───────────────────────────────────────────
|
|
29
|
-
//
|
|
30
|
-
// veto_memory_import { input_path: "/path/to/veto-export.json" }
|
|
31
|
-
// → merges into local ~/.veto/veto.db
|
|
32
|
-
// → INSERT OR IGNORE — local rows are never overwritten
|
|
33
|
-
// → returns { merged: {...}, skipped: {...} } showing what was added
|
|
34
|
-
//
|
|
35
|
-
// ── Step 4: Verify and resume ─────────────────────────────────────────────
|
|
36
|
-
//
|
|
37
|
-
// veto_sessions_list — confirm sessions arrived
|
|
38
|
-
// veto_session_restore { id } — load the session you want to continue
|
|
39
|
-
// veto_memory_search { query } — confirm knowledge base arrived
|
|
40
|
-
//
|
|
41
|
-
// ── What gets exported ────────────────────────────────────────────────────
|
|
42
|
-
//
|
|
43
|
-
// sessions — all saved sessions with task state and context
|
|
44
|
-
// decisions — all logged decisions and rationale
|
|
45
|
-
// knowledge_base — all stored solutions, patterns, errors, references
|
|
46
|
-
// patterns — coding style and convention patterns
|
|
47
|
-
// project_map — codebase structure maps
|
|
48
|
-
// council_outcomes — all council debate results
|
|
49
|
-
`.trim();
|
|
50
|
-
export function run(input) {
|
|
51
|
-
return {
|
|
52
|
-
skill: 'cross-sync',
|
|
53
|
-
template: TEMPLATE,
|
|
54
|
-
checklist: [
|
|
55
|
-
'Before leaving Machine A: call veto_memory_export to create the export file',
|
|
56
|
-
'Check the export result — confirm row counts look right for sessions and knowledge_base',
|
|
57
|
-
'Copy the export file to Machine B via any method (Dropbox, USB, scp, etc.)',
|
|
58
|
-
'On Machine B: call veto_memory_import with the file path',
|
|
59
|
-
'Check the import result — merged counts show what was added, skipped counts show duplicates',
|
|
60
|
-
'Call veto_sessions_list to confirm the sessions you need are present',
|
|
61
|
-
'Call veto_session_restore with the session ID to load your prior context',
|
|
62
|
-
'Call veto_memory_search to confirm knowledge base entries are available',
|
|
63
|
-
'If working across multiple machines regularly: use a shared folder (Dropbox) as output_path so no manual copy is needed',
|
|
64
|
-
'After significant work on Machine B: run veto_memory_export again before switching back',
|
|
65
|
-
],
|
|
66
|
-
patterns: [
|
|
67
|
-
'Export-before-switch: always export before ending a session, not only when switching machines',
|
|
68
|
-
'Shared-folder shortcut: point output_path at a Dropbox/OneDrive folder — no manual copy step',
|
|
69
|
-
'Merge semantics: INSERT OR IGNORE means both machines can export/import in any order without data loss',
|
|
70
|
-
'Verify-after-import: always call veto_sessions_list after import to confirm data arrived before starting work',
|
|
71
|
-
],
|
|
72
|
-
gotchas: [
|
|
73
|
-
'Forgetting to export before switching — Machine B starts with no memory of Machine A\'s work',
|
|
74
|
-
'Importing a stale export (from yesterday) — you lose today\'s work on Machine A; always export fresh',
|
|
75
|
-
'The export file is plain JSON — it contains your session context. Don\'t commit it to a public git repo',
|
|
76
|
-
'Pattern merge adds seen_counts from both machines — this is intentional (more observations = higher confidence)',
|
|
77
|
-
'INSERT OR IGNORE means if Machine B already has a session with the same ID, it is not updated. Export fresh from Machine A if you need the latest version of a session',
|
|
78
|
-
],
|
|
79
|
-
resources: [
|
|
80
|
-
'veto_memory_export — export all memory to JSON (default path: ~/.veto/veto-export.json)',
|
|
81
|
-
'veto_memory_import — import and merge JSON into local SQLite',
|
|
82
|
-
'veto_sessions_list — verify sessions after import',
|
|
83
|
-
'veto_session_restore — load a specific session to resume work',
|
|
84
|
-
'veto_memory_search — verify knowledge base after import',
|
|
85
|
-
],
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=skill-cross-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-cross-sync.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-cross-sync.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAiBxF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,6EAA6E;YAC7E,yFAAyF;YACzF,4EAA4E;YAC5E,0DAA0D;YAC1D,6FAA6F;YAC7F,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,yHAAyH;YACzH,yFAAyF;SAC1F;QACD,QAAQ,EAAE;YACR,+FAA+F;YAC/F,8FAA8F;YAC9F,wGAAwG;YACxG,+GAA+G;SAChH;QACD,OAAO,EAAE;YACP,8FAA8F;YAC9F,sGAAsG;YACtG,yGAAyG;YACzG,iHAAiH;YACjH,wKAAwK;SACzK;QACD,SAAS,EAAE;YACT,yFAAyF;YACzF,8DAA8D;YAC9D,mDAAmD;YACnD,+DAA+D;YAC/D,yDAAyD;SAC1D;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-decision-log.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-decision-log.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-decision-log.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA+DD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAwClD"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
// Skill: decision-log — guide to logging architectural and design decisions
|
|
2
|
-
const TEMPLATE = `
|
|
3
|
-
// ── Decision Log Entry ────────────────────────────────────────────────────
|
|
4
|
-
//
|
|
5
|
-
// Use this template for any decision that is:
|
|
6
|
-
// - Non-obvious (a reasonable engineer could choose differently)
|
|
7
|
-
// - Hard to reverse (schema changes, API contracts, auth architecture)
|
|
8
|
-
// - Frequently re-discussed (keeps relitigating the same debate)
|
|
9
|
-
// - A deliberate trade-off (performance vs correctness, simplicity vs flexibility)
|
|
10
|
-
//
|
|
11
|
-
{
|
|
12
|
-
"id": "ADR-001", // Sequential ID for referencing
|
|
13
|
-
"title": "Use JWT with rotating refresh tokens for authentication",
|
|
14
|
-
"status": "accepted", // proposed | accepted | deprecated | superseded-by:ADR-xxx
|
|
15
|
-
"date": "2026-05-01",
|
|
16
|
-
"deciders": ["agent:auth", "human:alice"],
|
|
17
|
-
|
|
18
|
-
"context": "We need an authentication mechanism for a stateless REST API that will be consumed by a mobile app and a web SPA. Session cookies are not ideal for the mobile client.",
|
|
19
|
-
|
|
20
|
-
"decision": "Implement stateless JWTs for access (15-minute TTL) with rotating refresh tokens stored server-side in a database table.",
|
|
21
|
-
|
|
22
|
-
"rationale": "JWTs allow stateless verification on every request without a DB lookup. Refresh token rotation limits the window of token theft. httpOnly cookies for refresh tokens prevent XSS access.",
|
|
23
|
-
|
|
24
|
-
"alternatives": [
|
|
25
|
-
{
|
|
26
|
-
"option": "Server-side sessions with Redis",
|
|
27
|
-
"pros": ["Instant revocation", "No JWT complexity"],
|
|
28
|
-
"cons": ["Requires Redis infrastructure", "Not stateless — every request hits Redis", "Mobile clients struggle with cookie-based sessions"],
|
|
29
|
-
"rejected_because": "Adds Redis dependency; poor fit for mobile client"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"option": "Long-lived JWTs with no refresh",
|
|
33
|
-
"pros": ["Simple implementation"],
|
|
34
|
-
"cons": ["Cannot revoke without infrastructure", "Long-lived tokens are a large attack window"],
|
|
35
|
-
"rejected_because": "Unacceptable security risk if token is stolen"
|
|
36
|
-
}
|
|
37
|
-
],
|
|
38
|
-
|
|
39
|
-
"consequences": {
|
|
40
|
-
"positive": [
|
|
41
|
-
"Stateless verification — no DB lookup per request",
|
|
42
|
-
"Refresh token rotation limits theft window to 15 minutes",
|
|
43
|
-
"Mobile and web clients use the same auth mechanism"
|
|
44
|
-
],
|
|
45
|
-
"negative": [
|
|
46
|
-
"Access tokens cannot be revoked before expiry (15-minute window)",
|
|
47
|
-
"Requires refresh token table with periodic cleanup job",
|
|
48
|
-
"More complex than simple sessions"
|
|
49
|
-
],
|
|
50
|
-
"neutral": [
|
|
51
|
-
"JWT library (jsonwebtoken) must be kept up to date for security patches"
|
|
52
|
-
]
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
"references": [
|
|
56
|
-
"OWASP Authentication Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html",
|
|
57
|
-
"RFC 6749 OAuth 2.0 Bearer Tokens",
|
|
58
|
-
"Related implementation: src/services/auth.service.ts"
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
`.trim();
|
|
62
|
-
export function run(input) {
|
|
63
|
-
return {
|
|
64
|
-
skill: 'decision-log',
|
|
65
|
-
template: TEMPLATE,
|
|
66
|
-
checklist: [
|
|
67
|
-
'Log the decision as soon as it is made — memory fades quickly and context is lost',
|
|
68
|
-
'Assign a sequential ID (ADR-001, ADR-002) to enable referencing in code comments and PRs',
|
|
69
|
-
'Write the context section first: describe the forces and constraints that made a choice necessary',
|
|
70
|
-
'State the decision explicitly and unambiguously — one clear sentence of what was decided',
|
|
71
|
-
'Document the rationale: why this option over the alternatives?',
|
|
72
|
-
'List at least two alternatives that were genuinely considered, not just strawmen',
|
|
73
|
-
'For each alternative, record pros, cons, and the specific reason it was rejected',
|
|
74
|
-
'Document positive, negative, and neutral consequences of the chosen option',
|
|
75
|
-
'Set the status field: proposed → accepted → deprecated or superseded-by:ADR-xxx',
|
|
76
|
-
'Add file references so future engineers can find the implementation',
|
|
77
|
-
'Reference the decision ID in relevant code comments: // See ADR-001',
|
|
78
|
-
'Store the decision log in docs/decisions/ or as a session memory entry',
|
|
79
|
-
'Update the status to "deprecated" or "superseded" when the decision changes — never delete',
|
|
80
|
-
'Review the decision log when revisiting a design — check if the original constraints still apply',
|
|
81
|
-
],
|
|
82
|
-
patterns: [
|
|
83
|
-
'Architecture Decision Record (ADR) format: context → decision → rationale → alternatives → consequences',
|
|
84
|
-
'Decision-in-context: link from code to the decision that explains the design choice',
|
|
85
|
-
'Living document: update status when decisions change rather than deleting entries',
|
|
86
|
-
'Lightweight ADR: one file per decision, stored in git alongside the code it describes',
|
|
87
|
-
],
|
|
88
|
-
gotchas: [
|
|
89
|
-
'Writing the decision without the rationale — future engineers will not know why, only what',
|
|
90
|
-
'Only documenting the chosen option without listing alternatives — looks like no thought went into it',
|
|
91
|
-
'Not updating stale decisions — a deprecated decision still marked "accepted" causes confusion',
|
|
92
|
-
'Writing the ADR after the fact with the benefit of hindsight — capture the original thinking at decision time',
|
|
93
|
-
'Logging trivial decisions — reserve the log for non-obvious choices; not every variable name needs an ADR',
|
|
94
|
-
],
|
|
95
|
-
resources: [
|
|
96
|
-
'https://adr.github.io/ (Architectural Decision Records overview)',
|
|
97
|
-
'https://github.com/joelparkerhenderson/architecture-decision-record (templates and examples)',
|
|
98
|
-
'https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions (original Michael Nygard post)',
|
|
99
|
-
'https://www.thoughtworks.com/radar/techniques/lightweight-architecture-decision-records',
|
|
100
|
-
],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=skill-decision-log.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-decision-log.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-decision-log.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAiB5E,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DhB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,mFAAmF;YACnF,0FAA0F;YAC1F,mGAAmG;YACnG,0FAA0F;YAC1F,gEAAgE;YAChE,kFAAkF;YAClF,kFAAkF;YAClF,4EAA4E;YAC5E,iFAAiF;YACjF,qEAAqE;YACrE,qEAAqE;YACrE,wEAAwE;YACxE,4FAA4F;YAC5F,kGAAkG;SACnG;QACD,QAAQ,EAAE;YACR,yGAAyG;YACzG,qFAAqF;YACrF,mFAAmF;YACnF,uFAAuF;SACxF;QACD,OAAO,EAAE;YACP,4FAA4F;YAC5F,sGAAsG;YACtG,+FAA+F;YAC/F,+GAA+G;YAC/G,2GAA2G;SAC5G;QACD,SAAS,EAAE;YACT,kEAAkE;YAClE,8FAA8F;YAC9F,yGAAyG;YACzG,yFAAyF;SAC1F;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-session-restore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-session-restore.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-session-restore.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAoClD"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// Skill: session-restore — guide to restoring context from a saved session
|
|
2
|
-
export function run(input) {
|
|
3
|
-
return {
|
|
4
|
-
skill: 'session-restore',
|
|
5
|
-
template: undefined,
|
|
6
|
-
checklist: [
|
|
7
|
-
'Call veto_sessions_list to find available sessions; pick the most recent one matching your task',
|
|
8
|
-
'Call veto_session_restore with the session_id — read the resume_instructions field first',
|
|
9
|
-
'Trust the restored context. Do NOT re-read source files to orient yourself — that defeats session restore and wastes tokens',
|
|
10
|
-
'Read task_state.nextAction (or context.nextAction) — that is your starting instruction, execute it directly',
|
|
11
|
-
'Read decisions[] to understand constraints already made — do not revisit them without cause',
|
|
12
|
-
'Read progress.completed to know what is done — do not redo this work',
|
|
13
|
-
'Read progress.remaining to know what is left before you start',
|
|
14
|
-
'Only open a file if you are about to EDIT it — not to "familiarize yourself" or "verify" it',
|
|
15
|
-
'If you find a file has changed since the save (e.g. a function is missing), read only that file, note the discrepancy, and continue',
|
|
16
|
-
'Save a new checkpoint after restore so future sessions start from your updated state, not the old one',
|
|
17
|
-
],
|
|
18
|
-
patterns: [
|
|
19
|
-
'Trust-then-act: the saved session is your context — start working from nextAction immediately',
|
|
20
|
-
'Read-only-to-edit: only read a file when you are about to change it, never for orientation',
|
|
21
|
-
'Stale-signal: if restored context mentions a symbol that does not exist, read only that file to reconcile',
|
|
22
|
-
'Checkpoint-on-restore: always save a new session immediately after restoring so the next session is current',
|
|
23
|
-
],
|
|
24
|
-
gotchas: [
|
|
25
|
-
'Re-reading the whole codebase after restore — this is the token-waste the tool exists to prevent; do not do it',
|
|
26
|
-
'Ignoring resume_instructions and falling back to default "read all files" behavior',
|
|
27
|
-
'Picking the wrong session when multiple tasks are in progress — check the task/summary field carefully',
|
|
28
|
-
'Not saving a new checkpoint after restore — the next session will start from the old stale state',
|
|
29
|
-
'Acting on a session saved in "blocked" state without first resolving the listed blocker',
|
|
30
|
-
],
|
|
31
|
-
resources: [
|
|
32
|
-
'Use the veto_session_restore MCP tool: { sessionId } → returns full session object',
|
|
33
|
-
'Use the veto_sessions_list MCP tool: returns all sessions sorted by updatedAt',
|
|
34
|
-
'Use the veto_session_save MCP tool after restoration to record the new starting point',
|
|
35
|
-
'MCP Session spec: https://modelcontextprotocol.io/docs/concepts/resources',
|
|
36
|
-
],
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=skill-session-restore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-session-restore.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-session-restore.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAiB3E,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE;YACT,iGAAiG;YACjG,0FAA0F;YAC1F,6HAA6H;YAC7H,6GAA6G;YAC7G,6FAA6F;YAC7F,sEAAsE;YACtE,+DAA+D;YAC/D,6FAA6F;YAC7F,qIAAqI;YACrI,uGAAuG;SACxG;QACD,QAAQ,EAAE;YACR,+FAA+F;YAC/F,4FAA4F;YAC5F,2GAA2G;YAC3G,6GAA6G;SAC9G;QACD,OAAO,EAAE;YACP,gHAAgH;YAChH,oFAAoF;YACpF,wGAAwG;YACxG,kGAAkG;YAClG,yFAAyF;SAC1F;QACD,SAAS,EAAE;YACT,oFAAoF;YACpF,+EAA+E;YAC/E,uFAAuF;YACvF,2EAA2E;SAC5E;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-session-save.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-session-save.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-session-save.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAqCD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqClD"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
// Skill: session-save — when and how to save MCP sessions
|
|
2
|
-
const TEMPLATE = `
|
|
3
|
-
// ── What to include in a session save ────────────────────────────────────
|
|
4
|
-
//
|
|
5
|
-
// A session save should capture enough context so that a future agent
|
|
6
|
-
// can resume work without re-reading all the source files.
|
|
7
|
-
//
|
|
8
|
-
// Recommended session object shape:
|
|
9
|
-
{
|
|
10
|
-
"task": "The original task description in one sentence",
|
|
11
|
-
"phase": "planning | implementing | reviewing | blocked | complete",
|
|
12
|
-
"progress": {
|
|
13
|
-
"completed": ["List of finished subtasks or files written"],
|
|
14
|
-
"inProgress": ["Current subtask being worked on"],
|
|
15
|
-
"remaining": ["Subtasks still to do"]
|
|
16
|
-
},
|
|
17
|
-
"decisions": [
|
|
18
|
-
{
|
|
19
|
-
"decision": "What was decided",
|
|
20
|
-
"rationale": "Why this approach was chosen",
|
|
21
|
-
"alternatives": ["Other options that were considered"],
|
|
22
|
-
"timestamp": "ISO 8601 timestamp"
|
|
23
|
-
}
|
|
24
|
-
],
|
|
25
|
-
"findings": [
|
|
26
|
-
"Any important discoveries that affect future work",
|
|
27
|
-
"File paths of key files that were read or modified",
|
|
28
|
-
"Patterns or constraints discovered in the codebase"
|
|
29
|
-
],
|
|
30
|
-
"blockers": [
|
|
31
|
-
"Anything preventing progress that needs human input"
|
|
32
|
-
],
|
|
33
|
-
"nextAction": "The single most important next step to resume work"
|
|
34
|
-
}
|
|
35
|
-
`.trim();
|
|
36
|
-
export function run(input) {
|
|
37
|
-
return {
|
|
38
|
-
skill: 'session-save',
|
|
39
|
-
template: TEMPLATE,
|
|
40
|
-
checklist: [
|
|
41
|
-
'Preferred: call veto_session_save { auto_summarize: true } — Veto reads the full conversation and generates the structured summary, context, and task_state for you. No manual writing needed.',
|
|
42
|
-
'Save at the start of every new significant phase: planning, implementing, reviewing',
|
|
43
|
-
'Save after completing each major file or subtask — checkpoint before moving to the next',
|
|
44
|
-
'Save before any risky operation (file overwrites, schema migrations, destructive commands)',
|
|
45
|
-
'Save immediately when a blocker is encountered that requires human input',
|
|
46
|
-
'Save when token context is getting large — a compact save enables a fresh continuation',
|
|
47
|
-
'If writing manually (auto_summarize: false): nextAction MUST be a concrete, file-specific instruction the NEXT AI can execute WITHOUT reading any files first — e.g. "Edit src/server.ts line 302 — add zod .max(2000) on summary field"',
|
|
48
|
-
'If writing manually: include only the specific file paths you actually modified, not a general codebase list',
|
|
49
|
-
'If writing manually: include enough inline context that the restoring AI does not need to re-read those files',
|
|
50
|
-
'Include blockers: anything requiring human action before work can continue',
|
|
51
|
-
'Verify the save succeeded — check auto_summarized: true in the response if you used auto_summarize',
|
|
52
|
-
],
|
|
53
|
-
patterns: [
|
|
54
|
-
'Checkpoint pattern: save after each completed unit of work, not only at the end',
|
|
55
|
-
'Progressive detail: early saves capture intent; later saves add findings and decisions',
|
|
56
|
-
'Minimal viable context: save enough to resume, not a full transcript of every action',
|
|
57
|
-
'Blocker-first save: when stuck, save immediately with the blocker clearly stated',
|
|
58
|
-
],
|
|
59
|
-
gotchas: [
|
|
60
|
-
'Not saving before a context switch — the next session starts blind without a save',
|
|
61
|
-
'Saving too much detail — a 5,000-token session save is expensive to restore and read',
|
|
62
|
-
'Forgetting to include nextAction — the restoring agent does not know where to start',
|
|
63
|
-
'Saving only at the very end — if the task fails partway through, the intermediate work is lost',
|
|
64
|
-
'Using vague phase descriptions ("working") instead of concrete phases (implementing step 3 of 7)',
|
|
65
|
-
],
|
|
66
|
-
resources: [
|
|
67
|
-
'Use the veto_session_save MCP tool: { sessionId, task, phase, progress, decisions, findings }',
|
|
68
|
-
'Use the veto_sessions_list MCP tool to verify saves and list available sessions',
|
|
69
|
-
'Use the veto_session_restore MCP tool to reload a previous session',
|
|
70
|
-
'MCP Session spec: https://modelcontextprotocol.io/docs/concepts/resources',
|
|
71
|
-
],
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=skill-session-save.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-session-save.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-session-save.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAiB1D,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,gMAAgM;YAChM,qFAAqF;YACrF,yFAAyF;YACzF,4FAA4F;YAC5F,0EAA0E;YAC1E,wFAAwF;YACxF,0OAA0O;YAC1O,8GAA8G;YAC9G,+GAA+G;YAC/G,4EAA4E;YAC5E,oGAAoG;SACrG;QACD,QAAQ,EAAE;YACR,iFAAiF;YACjF,wFAAwF;YACxF,sFAAsF;YACtF,kFAAkF;SACnF;QACD,OAAO,EAAE;YACP,mFAAmF;YACnF,sFAAsF;YACtF,qFAAqF;YACrF,gGAAgG;YAChG,kGAAkG;SACnG;QACD,SAAS,EAAE;YACT,+FAA+F;YAC/F,iFAAiF;YACjF,oEAAoE;YACpE,2EAA2E;SAC5E;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-accessibility.d.ts","sourceRoot":"","sources":["../../../src/skills/quality/skill-accessibility.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-accessibility.js","sourceRoot":"","sources":["../../../src/skills/quality/skill-accessibility.ts"],"names":[],"mappings":""}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface SkillInput {
|
|
2
|
-
task: string;
|
|
3
|
-
context?: string;
|
|
4
|
-
options?: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export interface SkillOutput {
|
|
7
|
-
skill: string;
|
|
8
|
-
template?: string;
|
|
9
|
-
checklist: string[];
|
|
10
|
-
patterns: string[];
|
|
11
|
-
gotchas: string[];
|
|
12
|
-
resources: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function run(input: SkillInput): SkillOutput;
|
|
15
|
-
//# sourceMappingURL=skill-code-review.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-code-review.d.ts","sourceRoot":"","sources":["../../../src/skills/quality/skill-code-review.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAkElD"}
|