Skip to main content

context-management

Strategies for efficient context management using context_log, context_tag, and context_checkout. Learn when to tag, how to visualize the graph, and safe ways to squash history. Use for complex refactoring, debugging, and long conversations.

معلومات المصدر

المستودع
Dwsy/agent
آخر نشاط في المصدر
٢٢ مارس ٢٠٢٦ في ١٦:٠٤
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢٣
التفرعات
٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
context-management
description
Strategies for efficient context management using context_log, context_tag, and context_checkout. Learn when to tag, how to visualize the graph, and safe ways to squash history. Use for complex refactoring, debugging, and long conversations.
# Context Management **CRITICAL: THIS SKILL MANAGES YOUR MEMORY. WITHOUT IT, YOU WILL FORGET.** Your context window is limited. As conversations grow, "pollution" (noise, failed attempts) degrades your reasoning. **YOU MUST PROACTIVELY MANAGE YOUR HISTORY.** Do not wait for the user to tell you. ## The Core Philosophy: Build, Perceive, Navigate ``` Context Window = RAM (Expensive, volatile, limited) Context Graph = Disk (Cheap, persistent, unlimited) → Move finished tasks from RAM to the Graph. ``` Manage your context window like a Git repository. You are the maintainer. 1. **BUILD the Skeleton (`context_tag`)**: * Raw conversation is a flat list. **Tags create structure.** * Without tags, `context_log` is just a list of IDs. With tags, it is a **Map**. 2. **PERCEIVE the State (`context_log`)**: * Check the HUD: Is "Segment Size" too big? You are drifting. * Check the Graph: Where are you? Are you in a deep branch? 3. **NAVIGATE & MERGE (`context_checkout`)**: * **Squash:** Convert a messy "feature branch" (thinking process) into a single "merge commit" (summary). * **Jump:** Move between tasks or retry paths without carrying baggage. ## Quick Start: The Loop Follow this cycle for every major task: 1. **CHECK:** Verify state. `context_log` 2. **START:** Tag the beginning with a semantic name. `context_tag({ name: "<task-slug>-start" })` // e.g., `auth-login-start` 3. **WORK:** Execute steps. 4. **MILESTONE:** Tag intermediate stable states. `context_tag({ name: "<task-slug>-plan" })` // e.g., `auth-login-plan` 5. **SQUASH (Autonomous):** If history becomes noisy or low-density, **Squash with Backup**. * *Action:* `context_checkout({ target: "<task-slug>-start", message: "...", backupTag: "<task-slug>-raw-history" })` * *Action (Optional):* `context_tag({ name: "<task-slug>-done" })` * *Safety:* If you need the details later, checkout the backup tag. ## Tool Reference | Tool | Analog | Purpose | When to Use | | :--- | :--- | :--- | :--- | | `context_tag` | `git tag` | Bookmark a stable state. | Before risky changes. Before starting a new task. | | `context_log` | `git log` | See where you are. | When you feel lost. To find IDs for checkout. | | `context_checkout`| `git reset --soft` | **Time Travel / Squash.** | To undo mistakes. To compress history. | ## Critical Rules ### Tag Wisely (Build The Skeleton) Tags are the "Table of Contents". Name them so you can understand the history at a glance. **Naming Formula:** `<task-slug>-<phase>` * **task-slug**: Short, kebab-case identifier for the task (e.g., `auth-login`, `db-migration`) * **phase**: The stage of work (`start`, `plan`, `impl`, `done`, `fail`, `backup`) | Bad (Generic) | Good (Semantic) | Why | | :--- | :--- | :--- | | `task-start` | `auth-oauth-start` | Describes WHAT task | | `pre-research` | `error-log-analysis-start` | Future-you knows the topic | | `phase-1-done` | `db-schema-plan-done` | Know which phase of which task | | `debug-retry` | `null-pointer-fix-retry` | What bug? | **Tag Categories:** | Category | Pattern | Examples | | :--- | :--- | :--- | | **Start** | `<task>-start` | `auth-jwt-start`, `docker-setup-start` | | **Plan** | `<task>-plan` | `api-v2-plan`, `migration-plan` | | **Milestone** | `<task>-<milestone>` | `auth-jwt-impl-done`, `tests-passed` | | **Backup** | `<task>-raw-history` | `auth-jwt-raw-history` | | **Failure** | `<task>-fail-<reason>` | `auth-jwt-fail-timeout` | **How to generate:** Ask yourself "What is the task?" → Extract 1-3 keywords (e.g., "fix login timeout" → `login-timeout-fix-start`) ### Squash Noise, Keep Signal, Focus on Goal (Context Hygiene) Think of your conversation as a "Feature Branch" full of messy thoughts. **You must distinguish Signal from Noise.** * **Signal (High Value):** Design decisions, user constraints, final working code. -> **KEEP.** * **Noise (Low Value):** Failed attempts, long tool outputs, "thinking" steps. -> **SQUASH.** * **Focus on Goal:** Ask yourself: "Does this message help me achieve the current goal?" -> **KEEP.** **When to Squash:** 1. **Task Done:** Convert the messy process into one clean summary. 2. **Low Density:** You read 2000 lines but only found 1 error. **Safety:** Squashing is **LOSSLESS**. By using `backupTag`, you save the "Messy Branch" forever. You can always checkout the backup tag if the summary isn't enough. * **Main Trunk:** Jump back to the summary. * **Backup Tag:** Jump back to the raw details. ### Fail Fast, Revert Faster If you fail 3 times: 1. **STOP.** Don't try a 4th time. 2. `context_checkout` back to the last safe tag. 3. Summarize the failure in the checkout message ("Tried X, failed because Y"). 4. Try a new approach from the clean state. ### After Checkout: Execute Next Step When `context_checkout` completes and injects a summary, you are in a **new context**. 1. **READ** the injected summary carefully 2. **EXECUTE** the `Next Step` from the summary - this is your new task. ## Decision Matrix: When to Act | Situation | Action | Reason | | :--- | :--- | :--- | | **Starting Task** | `context_tag({ name: "<task-slug>-start" })` | Create a rollback point. | | **Research / Logs** | `context_checkout` (Squash) | **Process is Noise.** Read 2000 lines -> Keep result. | | **Messy Debugging** | **Squash w/ Backup** | **Cleanup.** The error logs are noise once fixed. | | **Task Done (Candidate)**| **Squash w/ Backup** | **Assume Success.** Summary is usually enough. Backup exists if not. | | **Goal Shift** | `context_checkout` (Squash) | Old context is irrelevant. | | **Drift (some steps w/o tag)** | **Tag (Milestone)** | Maintain the skeleton. Don't fly blind. | ## The "Context Health" Check If you cannot answer these, run `context_log`: | Question | Answer Source | | :--- | :--- | | **Where is the skeleton?** | The sequence of `tag`s in the log. | | **Is this history useful?** | If "No" -> **SQUASH IT.** | | **Am I in a loop?** | Repeated entries in the graph. | ## Good Checkout Messages The `message` is your lifeline to your past self. A good message preserves critical context that would otherwise be lost. Structure: `[Key Finding/Status] + [Reason] + [Important Changes] + [Next Step]` * **Key Finding/Status**: What did you discover or complete? Include specific numbers, errors, or outcomes. * **Reason**: Why are you branching/moving? (e.g., "Task complete", "Approach failed", "Need raw logs") * **Important Changes**: What files or logic have been modified? (This checkout only resets *conversation history*, NOT disk files, so you must remember what changed.) * **Next Step**: What should you do immediately after this squash? Be specific. (e.g., "Wait for user feedback", "Implement the recommended fix", "Revert file X and try approach Y") Examples: * *Good (Resetting after failure)*: "Recursive parser hit stack overflow at depth 8000. Switching to iterative. **Reason**: Stack limit reached. **Important Changes**: Modified `utils/recursion.ts`. **Next Step**: Inform user of the failure and propose iterative approach." * *Good (Cleaning up)*: "Auth module complete: JWT + OAuth2 + RBAC. 23 tests passing. **Reason**: Task done, cleaning context. **Important Changes**: Created `auth/`, modified `routes.ts` and `middleware.ts`. **Next Step**: Report completion to user, ask if they want to review or test." * *Bad*: "Switching context." (Too vague - you will forget why) * *Bad*: "Done." (What is done? What should you do next?) ## Anti-Patterns | Don't | Do Instead | | :--- | :--- | | **Blind Tagging** (Tagging without looking) | **Check** (`context_log`) to avoid duplicates or tagging noise. | | **Over-Tagging** (Tagging every step) | **Tag** only major phase changes (`start`, `milestone`). | | **Hoard** (Keep all history "just in case") | **Squash** low-density history (research, logs). | | **Panic** (Apologize repeatedly for errors) | **Revert** (`context_checkout`) to before the error. | | **Blind Checkout** (Guessing IDs) | **Look** (`context_log`) first to get valid IDs. | | **Vague Summaries** ("Done", "Fixed") | **Detailed Summaries** ("Found bug in line 40. Fixed with patch X.") | | **Generic Tag Names** (`task-start`, `phase-1`) | **Semantic Names** (`auth-jwt-start`, `db-schema-plan`) | | **Missing Next Step** in checkout message | **Always specify** what to do after squash (e.g., "Wait for user", "Implement fix X") | ## Recipes (Copy-Paste) ### 1. The "Miner" (Immediate Squash) **Goal:** Pure information gathering (Reading files, Searching web). **Why:** The *process* of searching is irrelevant. Only the *result* matters. **Example Task:** Analyzing error logs to find root cause of timeout ```javascript // 1. Tag BEFORE starting the noisy work (use descriptive name) context_tag({ name: "timeout-analysis-start" }); // ... (Read 5 log files, search 3 docs, find DB connection pool exhaustion) ... // 2. Squash IMMEDIATELY. Do not wait for user. context_checkout({ target: "timeout-analysis-start", message: "Found DB connection pool exhaustion as root cause (pool size: 10, peak load: 1000 req/s). Recommended fix: increase to 50. **Reason**: Context cleanup after research. **Important Changes**: None (read-only). **Next Step**: Report findings to user and await approval to implement fix.", backupTag: "timeout-analysis-raw-history" // Safety backup }); context_tag({ name: "timeout-analysis-done" }); ``` ### 2. The "Candidate" (Wait for Confirmation) **Goal:** You finished a complex task. **Why:** The history is noisy. The result is clean. **Safety:** We create a backup tag automatically. **Example Task:** Implementing OAuth login flow ```javascript // Squash to Summary (Optimistic Cleanup) context_checkout({ target: "oauth-impl-start", // Squash range: Start -> Now message: "OAuth2 flow implemented with PKCE, Google + GitHub providers. All 12 tests passing. **Reason**: Task complete, cleaning up. **Important Changes**: Created `auth/oauth.ts`, modified `routes.ts`, `config.ts`. **Next Step**: Report completion to user, summarize what was implemented.", backupTag: "oauth-impl-raw-history" }); context_tag({ name: "oauth-impl-candidate" }); ``` ### 3. The "Undo" (Revert Squash) **Goal:** User asks about a detail you squashed away. **Action:** Jump back to the backup tag. **Example Task:** Reviewing OAuth implementation details ```javascript // Jump back to the raw history context_checkout({ target: "oauth-impl-raw-history", message: "Reviewing token refresh logic - user reports 401 after 15 min idle. Suspect refresh token not firing. **Reason**: Need raw logs to trace the bug. **Important Changes**: None. **Next Step**: Re-read token refresh implementation and identify the bug." }); context_tag({ name: "oauth-review-start" }); ``` ### 4. Branching (Alternative Approach) **Scenario:** Method A failed (and was squashed). You want to try Method B from the clean state.
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub