AgentSkillsCN

workflow-tt-adapter-add

搭建、实施、测试并注册全新的时间旅行研究适配器。可通过“/workflow tt-adapter-add”来调用该功能。

SKILL.md
--- frontmatter
name: workflow-tt-adapter-add
description: Scaffold, implement, test, and register a new timetravel research adapter. Invoke with /workflow tt-adapter-add.
skill_type: workflow
category: process-workflow
disable-model-invocation: true
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Task

Workflow: Timetravel Adapter Add

Add a new research adapter to ~/digital/leviathan/plugins/timetravel/.

Every step spawns a fresh subagent (poly sparkle pattern). State flows only through handoff artifacts at .lev/pm/handoffs/tt-adapter-add-*.md.

Trigger

  • User wants to add a new search/research API as a timetravel adapter
  • /workflow tt-adapter-add <adapter-name> "<api-description>"

Inputs

InputRequiredDescription
adapter_nameyesKebab-case adapter identifier (e.g. serper, you-com)
api_descriptionyesBrief description of the API and its search endpoint
api_docs_urlnoURL to API documentation
env_keynoOverride env var name (default: <ADAPTER_NAME>_API_KEY)

Steps

Step 1: Research API

Agent Type: Explore Skills: skill://lev-research Research:

  • Read API docs at api_docs_url (if provided) or search for "<adapter_name> API documentation"
  • Read the reference adapter: ~/digital/leviathan/plugins/timetravel/src/adapters/brave.ts
  • Read the adapter interface: ~/digital/leviathan/plugins/timetravel/src/adapter.ts
  • Examine 2-3 existing adapters in ~/digital/leviathan/plugins/timetravel/src/adapters/ for patterns

Action:

  • Document: base URL, auth method, request params, response shape, rate limits
  • Map response fields to Source interface (title, url, snippet, sourceType)
  • Identify capabilities: search, extract, news, video, etc.

Handoff: .lev/pm/handoffs/tt-adapter-add-1-research.md

yaml
api_base_url: https://...
auth_method: header | query | bearer
env_key: <KEY_NAME>
capabilities: [search, ...]
response_mapping:
  title: <path>
  url: <path>
  snippet: <path>
rate_limits: <description>

Step 2: Scaffold

Agent Type: general-purpose Skills: None Research:

  • Read handoff from Step 1
  • Read ~/digital/leviathan/plugins/timetravel/src/adapters/brave.ts as template

Action:

  • Create ~/digital/leviathan/plugins/timetravel/src/adapters/<adapter_name>.ts
  • Copy BraveAdapter structure, rename class to <AdapterName>Adapter
  • Set name, envKey, capabilities from handoff
  • Leave search() body as // TODO: implement in Step 3

Handoff: .lev/pm/handoffs/tt-adapter-add-2-scaffold.md

yaml
file_created: src/adapters/<adapter_name>.ts
class_name: <AdapterName>Adapter

Step 3: Implement

Agent Type: general-purpose Skills: None Research:

  • Read handoffs from Steps 1 and 2
  • Read the scaffolded file

Action:

  • Implement isAvailable() — check env var
  • Implement search(query) — HTTP call to API, map response to SearchResult
  • Implement extract?(urls) if API supports content extraction
  • Use axios for HTTP (already a project dependency)
  • Handle errors: catch and return { sources: [], duration, adapter: this.name }

Handoff: .lev/pm/handoffs/tt-adapter-add-3-implement.md

yaml
file_modified: src/adapters/<adapter_name>.ts
methods_implemented: [isAvailable, search, extract?]
status: complete

Step 4: Register

Agent Type: general-purpose Skills: None Research:

  • Read ~/digital/leviathan/plugins/timetravel/src/adapters/index.ts for export pattern
  • Read ~/digital/leviathan/plugins/timetravel/src/strategy.ts for strategy adapter lists

Action:

  • Add import + export to src/adapters/index.ts
  • Add adapter instance to createAllAdapters() array
  • Optionally add adapter to relevant strategies in STRATEGIES constant if appropriate

Handoff: .lev/pm/handoffs/tt-adapter-add-4-register.md

yaml
files_modified: [src/adapters/index.ts, src/strategy.ts]
strategies_updated: [<list or none>]

Step 5: Write Tests

Agent Type: general-purpose Skills: None Research:

  • Read existing test files in ~/digital/leviathan/plugins/timetravel/tests/
  • Read handoffs from Steps 1-4

Action:

  • Add adapter tests to tests/adapters.test.ts (or create tests/adapters/<adapter_name>.test.ts)
  • Test: isAvailable() returns boolean
  • Test: search() returns valid SearchResult shape
  • Test: error handling returns empty sources
  • If live test file exists (tests/adapters.live.test.ts), add a live smoke test

Handoff: .lev/pm/handoffs/tt-adapter-add-5-tests.md

yaml
files_created: [<test files>]
test_count: <n>

Step 6: Run Tests

Agent Type: general-purpose Skills: None Research:

  • Read handoff from Step 5

Action:

  • Run cd ~/digital/leviathan/plugins/timetravel && pnpm test
  • Run cd ~/digital/leviathan/plugins/timetravel && pnpm build
  • Verify timetravel status shows new adapter (available if key set, unavailable if not)
  • Verify timetravel adapters includes the new adapter in JSON output

Handoff: .lev/pm/handoffs/tt-adapter-add-6-tests-run.md

yaml
test_result: pass | fail
build_result: pass | fail
adapter_visible: true | false
failures: [<list if any>]

Step 7: Document

Agent Type: general-purpose Skills: None Research:

  • Read handoffs from all previous steps
  • Read ~/digital/leviathan/plugins/timetravel/README.md (if exists)
  • Read ~/.agents/skills/lev-research/SKILL.md for tool manifest table

Action:

  • Update README.md (or create if missing) with adapter entry
  • Add env var to .env.example if it exists
  • Update lev-research SKILL.md tool manifest table with new adapter row
  • Log final summary

Handoff: .lev/pm/handoffs/tt-adapter-add-7-document.md

yaml
files_modified: [README.md, .env.example, lev-research/SKILL.md]
adapter_name: <name>
status: complete

Outputs

  • New adapter file: src/adapters/<adapter_name>.ts
  • Updated registry: src/adapters/index.ts
  • Test coverage: tests/adapters/ or inline
  • Documentation updates
  • 7 handoff artifacts in .lev/pm/handoffs/tt-adapter-add-*.md

Validation

  • pnpm build passes with zero errors
  • pnpm test passes (all existing + new tests)
  • timetravel status shows adapter in list
  • timetravel search "test" --adapter <name> returns results (if key available)
  • Adapter implements ResearchAdapter interface correctly
  • All 7 handoff files created

Usage

bash
/workflow tt-adapter-add serper "Google SERP API via serper.dev"
/workflow tt-adapter-add you-com "You.com AI search API" --api-docs https://api.you.com/docs

Technique Map

  • Role definition - Clarifies operating scope and prevents ambiguous execution.
  • Context enrichment - Captures required inputs before actions.
  • Output structuring - Standardizes deliverables for consistent reuse.
  • Step-by-step workflow - Reduces errors by making execution order explicit.
  • Edge-case handling - Documents safe fallbacks when assumptions fail.

Technique Notes

These techniques improve reliability by making intent, inputs, outputs, and fallback paths explicit. Keep this section concise and additive so existing domain guidance remains primary.

Prompt Architect Overlay

Role Definition

You are the prompt-architect-enhanced specialist for workflow-tt-adapter-add, responsible for deterministic execution of this skill's guidance while preserving existing workflow and constraints.

Input Contract

  • Required: clear user intent and relevant context for this skill.
  • Preferred: repository/project constraints, existing artifacts, and success criteria.
  • If context is missing, ask focused questions before proceeding.

Output Contract

  • Provide structured, actionable outputs aligned to this skill's existing format.
  • Include assumptions and next steps when appropriate.
  • Preserve compatibility with existing sections and related skills.

Edge Cases & Fallbacks

  • If prerequisites are missing, provide a minimal safe path and request missing inputs.
  • If scope is ambiguous, narrow to the highest-confidence sub-task.
  • If a requested action conflicts with existing constraints, explain and offer compliant alternatives.