diff --git a/.agents/skills/parallel-memory b/.agents/skills/parallel-memory new file mode 120000 index 0000000..c843e83 --- /dev/null +++ b/.agents/skills/parallel-memory @@ -0,0 +1 @@ +../../skills/parallel-memory/ \ No newline at end of file diff --git a/README.md b/README.md index f2421f7..34efaaf 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ Skills follow the [Agent Skills](https://agentskills.io/specification) specifica | **parallel-data-enrichment** | Enrich lists of companies, people, products | | **parallel-findall** | Discover entities matching a natural-language description | | **parallel-monitor** | Continuously track the web for changes (with webhooks) | +| **parallel-memory** | Recall and manage saved Parallel runs | | **migrate-to-parallel** | Migrate Exa, Tavily, Perplexity, or Firecrawl integrations to Parallel | | **parallel-cli-setup** | Install/update CLI, authenticate, and handle balance | | **status** | Check running research task status | @@ -85,6 +86,7 @@ Skills follow the [Agent Skills](https://agentskills.io/specification) specifica /parallel:parallel-data-enrichment Apple, Microsoft, Google - get CEO names /parallel:parallel-findall AI startups that raised Series A in 2026 /parallel:parallel-monitor track price changes for the iPhone 16 Pro +/parallel:parallel-memory retrieve past research about AI code assistants /parallel:migrate-to-parallel migrate this app from Tavily to Parallel /parallel:migrate-to-parallel migrate this app from Perplexity to Parallel /parallel:migrate-to-parallel migrate this app from Firecrawl to Parallel diff --git a/skills/parallel-cli-setup/SKILL.md b/skills/parallel-cli-setup/SKILL.md index 6192509..976d572 100644 --- a/skills/parallel-cli-setup/SKILL.md +++ b/skills/parallel-cli-setup/SKILL.md @@ -26,7 +26,7 @@ If missing, install with any of these methods: 3. Linux/macOS/Windows (npm): `npm install -g parallel-web-cli` 4. Linux/macOS/Windows (pipx): `pipx install "parallel-web-tools[cli]" && pipx ensurepath` -When `parallel-cli` is present, require version `>=0.7.1`. If older, identify the install method before advising an update. Use `command -v parallel-cli`, then inspect `readlink "$(command -v parallel-cli)"` if it is a symlink. Paths under `~/.local/share/uv/ +When `parallel-cli` is present, require version `>=0.8.1`. If older, identify the install method before advising an update. Use `command -v parallel-cli`, then inspect `readlink "$(command -v parallel-cli)"` if it is a symlink. Paths under `~/.local/share/uv/ tools/` indicate `uv tool install`; paths under `~/.local/share/parallel-cli/` indicate the standalone installer. Upgrade commands (choose based on how it was installed): diff --git a/skills/parallel-memory/SKILL.md b/skills/parallel-memory/SKILL.md new file mode 100644 index 0000000..0946200 --- /dev/null +++ b/skills/parallel-memory/SKILL.md @@ -0,0 +1,91 @@ +--- +name: parallel-memory +description: "Recall past Parallel Task, Monitor, and FindAll runs when they may help; evict runs or clear memory when asked." +user-invocable: true +argument-hint: [args] +compatibility: Requires parallel-cli >=0.8.1 and internet access. +allowed-tools: Bash(parallel-cli:*) +metadata: + author: parallel +--- + +# Parallel Memory + +Action: $ARGUMENTS + +> Requires `parallel-cli >=0.8.1`. If the installed version is older, or `parallel-cli memory --help` fails with `no such command` or similar, tell the user to update `parallel-cli`, then retry. + +## When to use + +- Inspect memory only when prior Parallel work may help fulfill the request or the user asks to retrieve, evict, or clear it. +- Memory results are excerpts from past runs; fetch the source run for full records, and launch a fresh run when current information is required. + +## Choose the operation + +| User intent | Operation | +|---|---| +| Recall prior work about a topic | Retrieve with a concise query | +| Show recent past runs | Retrieve without `query` | +| Remove one saved Task, Monitor, or FindAll source | Evict by exact `kind` and `id` | +| Permanently remove all entries from your personal Memory | Clear memory | +| Turn memory off | Direct the user to account settings; do not clear as a substitute | + +## Use the CLI + +Use `parallel-cli memory` for retrieve, evict, and clear operations. + +- If memory is not eligible, report the returned reason; it distinguishes rollout, organization settings, account opt-in, and key eligibility. +- On a key-eligibility error, tell the user to reauthenticate. + +## Retrieve memory + +Form a short semantic query that describes the prior work to find. Apply filters when they help. Empty `results` is a successful retrieval with no matches, not an error. + +- Set `kind` to `task`, `monitor`, or `findall` when it clearly narrows the retrieval. +- Set `since` for an explicit timestamp boundary (RFC 3339, e.g. `2026-08-01T00:00:00Z`). +- Omit `query` when retrieving recent memories rather than a topic. + +Retrieve by query: + +```bash +parallel-cli memory retrieve \ + --query "serverless inference vendors" +``` + +For recent memories: + +```bash +parallel-cli memory retrieve \ + --limit 5 +``` + +## Use results + +Available fields vary by `kind`: + +- `task`: use `id`, `updated_at`, `input_excerpt`, and `output_excerpt`. +- `monitor`: use the monitor `id`, status, query excerpt, and matching event IDs, timestamps, and excerpts. +- `findall`: use `id`, `updated_at`, objective excerpt, and `matched_count`. + +- Fetch the original Task result, Monitor events, or FindAll result when exact output, entities, citations, or provenance matter. +- Summarize the useful findings and unresolved questions. +- Lead with what the prior work established, then list the contributing saved runs with kind, ID, and timestamp. +- Distinguish recalled information from any fresh verification. +- Parallel runs do not consult Memory. If recalled information may be useful, include the relevant details in the new run's input. + +Expect ingestion to be asynchronous. Do not promise that a newly completed run will be immediately retrievable. + +## Evict or clear memory + +Evict a single run from your personal Memory, or clear it entirely. These do not delete the underlying Parallel runs. Ask for confirmation before clearing unless the user already asked for it. + +```bash +parallel-cli memory evict \ + --kind task \ + --id "trun_example" +``` + +```bash +parallel-cli memory clear \ + --confirm-clear +``` diff --git a/tests/test_repository_layout.py b/tests/test_repository_layout.py index 2bf917e..891139c 100644 --- a/tests/test_repository_layout.py +++ b/tests/test_repository_layout.py @@ -41,6 +41,12 @@ def test_migration_skill_is_project_discoverable(self): self.assertTrue(link.is_symlink()) self.assertTrue(link.exists()) + def test_memory_skill_is_project_discoverable(self): + link = PROJECT_SKILLS_ROOT / "parallel-memory" + + self.assertTrue(link.is_symlink()) + self.assertTrue(link.exists()) + if __name__ == "__main__": unittest.main()