{"id":72821,"plugin_id":"plugin_asdk_app_6a9d801edf548191b5c343c572185c8f","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T01:14:05.487Z","digest":"3ed8a2f1f2490afab986dddccc159c3f455108a6fc9213acc8171dcba3e9ca34","against":null,"payload":{"description":"The user's one memory across every AI tool (innernet.live). Use when a conversation touches a project the user keeps in innernet — its product, strategy, roadmap, brand, design, code, or past decisions — when they ask what was decided or where things stand, when work produces a decision or insight worth keeping, or when you learn something durable about the user themselves.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":272}],"name":"innernet","skill_md_contents":"---\nname: innernet\ndescription: The user's one memory across every AI tool (innernet.live). Use when a conversation touches a project the user keeps in innernet — its product, strategy, roadmap, brand, design, code, or past decisions — when they ask what was decided or where things stand, when work produces a decision or insight worth keeping, or when you learn something durable about the user themselves.\n---\n\ninnernet is connected to this conversation as an MCP server. It holds the user's\nversioned memory: one context map per project, a personal memory about the user,\nand each project's task list. Every AI tool they use reads and writes the same\nmemory, so what you save here is what their other tools see next.\n\n## before you answer about a project\n\n1. Find the project: `innernet_list_projects` returns each map's slug and one line.\n   If the user names one, match it; if the conversation clearly belongs to one, load it\n   without asking.\n2. Load it lean: `innernet_load_project { slug }`. You get the map's spine — one line\n   per dimension — plus a `capture_protocol` written for that project. Follow it.\n3. Answer a specific question from a slice, not the whole cabinet:\n   `innernet_context { slug, intent }` with the user's ask verbatim returns the focus,\n   its periphery, and `retrieval_advice` naming what to read next.\n   Every item carries a `ref` and a short `v`. On a later call in the same conversation, pass\n   what you already hold as `known: [\"ref@v\", ...]`: a section you hold unchanged comes back as\n   a one-line stub, an edited one comes back whole, and the room goes to sections you have not\n   seen. A small memory comes back whole on every call, so `known` matters most there.\n   `innernet_get_dimension { project_slug, dimension_name }` expands one dimension in full.\n4. When the user asks what innernet knows in general, `search { query }` runs full-text\n   search across every map, and `fetch { id }` returns one project whole.\n\nNever pull full bodies you will not use. Let innernet drive retrieval.\n\n## when work produces something worth keeping\n\n- A decision, a direction, a corrected fact, a plan: `innernet_save_context`. Write the\n  present. If what you save supersedes something a dimension states, replace it in the\n  body — never leave old and new side by side — and add ONE dated line under a\n  `## history` heading at the end of that dimension:\n  `- YYYY-MM-DD — what changed: was … → now …`.\n- A quick note that should fold into the map later, when you are unsure where it\n  belongs: `innernet_capture`. Netti files it.\n- Something about the USER (a preference, a tool they rely on, a person in their life,\n  how or when they work, a standing instruction): `innernet_self_capture`, and mention\n  briefly that you noted it. If the user would rather it not be kept, do not save it.\n  Several captures piled up → `innernet_self_sync` folds them into facts.\n  Personalising tone or defaults would help → read `innernet_self_facts`. Each fact\n  says how it rests on what was said (`voice`): \"said\" is the user's own words,\n  \"reported\" an AI's note of what they said or did, \"inferred\" innernet's reading.\n  Speak for the user, or quote them, only from \"said\".\n- Unsure whether it is about the user or a project: `innernet_triage` routes it.\n\n## who said it\n\ninnernet keeps the user's words apart from yours, so it never tells them \"you said\"\nabout something an AI wrote.\n\n- What you write in `content` is kept as your note: what you saw, did or suggested,\n  in your own voice. Never write your own work as the user's (\"I removed the blur\n  from the header\" is yours, not theirs), and a proposal of yours is not their\n  decision until they say so.\n- When the note is about something the user said, decided, prefers or is, also pass\n  their exact words, copied from their message, in `user_words` (on `innernet_capture`,\n  `innernet_self_capture` and `innernet_triage`). Only those are kept as theirs, so\n  never put a summary or a paraphrase there.\n\n## tasks\n\nEach project carries a task list: `innernet_task_list`, `innernet_task_create`,\n`innernet_task_update`, `innernet_task_complete`. When the user finishes something the\nlist tracks, complete it; when they commit to something new, add it.\n\n## how to carry it\n\n- Keep it light. Save what matters without turning the conversation into bookkeeping,\n  and say in a few words what you saved and where, so the user always knows.\n- Surface a relevant memory when it helps. Flag anything that looks stale or\n  contradicted instead of asserting it.\n- If innernet asks for authentication, the user signs in in their browser through\n  the plugin's connection. Never ask them to paste an API key or token into the chat.\n\n## when not to use it\n\n- Small talk, or a topic the user has no project for and nothing durable was said.\n- The user asks you not to remember something — then do not save it.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}