@wrongstack/core 0.4.1 → 0.5.0
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/dist/{agent-bridge-DaOnnHNW.d.ts → agent-bridge-BkjOkSkD.d.ts} +1 -1
- package/dist/{compactor-CFky6JKM.d.ts → compactor-CTHjZAwf.d.ts} +1 -1
- package/dist/{config-RlhKLjme.d.ts → config-DO2eCKgq.d.ts} +1 -1
- package/dist/{context-B1kBj1lY.d.ts → context-P207fTpo.d.ts} +11 -0
- package/dist/coordination/index.d.ts +10 -891
- package/dist/coordination/index.js +407 -236
- package/dist/coordination/index.js.map +1 -1
- package/dist/defaults/index.d.ts +19 -18
- package/dist/defaults/index.js +2139 -284
- package/dist/defaults/index.js.map +1 -1
- package/dist/{events-BBaKeMfb.d.ts → events-DYAbU84e.d.ts} +41 -1
- package/dist/execution/index.d.ts +19 -13
- package/dist/execution/index.js +15 -6
- package/dist/execution/index.js.map +1 -1
- package/dist/extension/index.d.ts +6 -6
- package/dist/index-BHL8QDCL.d.ts +899 -0
- package/dist/{index-meJRuQtc.d.ts → index-BNzUUDVR.d.ts} +8 -6
- package/dist/index.d.ts +30 -27
- package/dist/index.js +3764 -1446
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/index.d.ts +6 -6
- package/dist/infrastructure/index.js +67 -2
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/kernel/index.d.ts +10 -9
- package/dist/kernel/index.js.map +1 -1
- package/dist/{mcp-servers-Cf4-bJnd.d.ts → mcp-servers-CLkhKdnF.d.ts} +18 -3
- package/dist/models/index.d.ts +2 -2
- package/dist/models/index.js +106 -0
- package/dist/models/index.js.map +1 -1
- package/dist/{multi-agent-D5m66hzB.d.ts → multi-agent-B1Nn9eC0.d.ts} +71 -16
- package/dist/observability/index.d.ts +2 -2
- package/dist/{path-resolver-Bg4OP5fi.d.ts → path-resolver-mPccVA0l.d.ts} +9 -2
- package/dist/{provider-runner-CU9gnU2E.d.ts → provider-runner-D7lHu07L.d.ts} +3 -3
- package/dist/{skill-DayhFUBb.d.ts → retry-policy-CnYVKGPv.d.ts} +2 -28
- package/dist/sdd/index.d.ts +419 -5
- package/dist/sdd/index.js +1580 -1
- package/dist/sdd/index.js.map +1 -1
- package/dist/{secret-scrubber-Dyh5LVYL.d.ts → secret-scrubber-BSgec8CU.d.ts} +1 -1
- package/dist/{secret-scrubber-DyUAWS09.d.ts → secret-scrubber-Buo9zLGs.d.ts} +1 -1
- package/dist/security/index.d.ts +8 -4
- package/dist/security/index.js +8 -0
- package/dist/security/index.js.map +1 -1
- package/dist/{selector-DBEiwXBk.d.ts → selector-B-CGOshv.d.ts} +1 -1
- package/dist/{session-reader-D-z0AgHs.d.ts → session-reader-DmOEmSkq.d.ts} +1 -1
- package/dist/skill-CxuWrsKK.d.ts +29 -0
- package/dist/skills/index.d.ts +136 -0
- package/dist/skills/index.js +478 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/storage/index.d.ts +5 -5
- package/dist/{system-prompt-DNetCecu.d.ts → system-prompt-CzY1zrbC.d.ts} +1 -1
- package/dist/{tool-executor-B5bgmEgE.d.ts → tool-executor-CYe5cp5U.d.ts} +4 -4
- package/dist/types/index.d.ts +16 -15
- package/dist/types/index.js +116 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +35 -2
- package/dist/utils/index.js +49 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -1
- package/skills/sdd/SKILL.md +93 -6
- package/skills/skill-creator/SKILL.md +98 -0
package/dist/types/index.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
export { A as AgentError, C as Capabilities, a as ConfigError, b as ContentBlock, E as ErrorCode, c as ErrorSeverity, d as ErrorSubsystem, I as ImageBlock, J as JSONSchema, M as Message, e as MessageRole, P as Permission, f as PluginError, g as Provider, h as ProviderError, i as ProviderErrorBody, R as Request, j as Response, k as ResumedSession, S as SessionData, l as SessionError, m as SessionEvent, n as SessionMetadata, o as SessionStore, p as SessionSummary, q as SessionWriter, r as StopReason, s as StreamEvent, T as TextBlock, t as ThinkingBlock, u as Tool, v as ToolCallContext, w as ToolError, x as ToolFinalEvent, y as ToolProgressEvent, z as ToolResultBlock, B as ToolStreamEvent, D as ToolUseBlock, U as Usage, W as WrongStackError, F as asBlocks, G as asText, H as isAgentError, K as isConfigError, L as isImageBlock, N as isPluginError, O as isSessionError, Q as isTextBlock, V as isThinkingBlock, X as isToolError, Y as isToolResultBlock, Z as isToolUseBlock, _ as isWrongStackError, $ as toWrongStackError } from '../context-
|
|
2
|
-
export { P as ProviderRunner, R as RunProviderOptions } from '../provider-runner-
|
|
3
|
-
export { C as CONTEXT_WINDOW_MODES, a as Config, b as ConfigLoader, c as ConfigStore, d as ContextConfig, e as ContextWindowAggressiveOn, f as ContextWindowConfigLike, g as ContextWindowMode, h as ContextWindowModeId, i as ContextWindowPolicy, j as ContextWindowThresholds, D as DEFAULT_CONTEXT_WINDOW_MODE_ID, F as FeaturesConfig, L as LogConfig, M as MCPServerConfig, P as PluginConfig, k as ProviderApiKey, l as ProviderConfig, T as ToolsConfig, m as formatContextWindowModeList, n as getContextWindowMode, o as isContextWindowModeId, p as listContextWindowModes, r as resolveContextWindowPolicy } from '../config-
|
|
4
|
-
export { C as CompactReport, a as Compactor } from '../compactor-
|
|
5
|
-
export { P as PermissionDecision, a as PermissionPolicy, T as TrustPolicy } from '../secret-scrubber-
|
|
6
|
-
export { A as AddAttachmentInput, a as Attachment, b as AttachmentKind, c as AttachmentMeta, d as AttachmentRef, e as AttachmentStore, D as DefaultSessionReader } from '../session-reader-
|
|
7
|
-
export { D as DefaultSecretScrubber, a as DefaultSecretVault, S as SecretVaultOptions, d as decryptConfigSecrets, e as encryptConfigSecrets, m as migratePlaintextSecrets, r as rewriteConfigEncrypted } from '../secret-scrubber-
|
|
1
|
+
export { A as AgentError, C as Capabilities, a as ConfigError, b as ContentBlock, E as ErrorCode, c as ErrorSeverity, d as ErrorSubsystem, I as ImageBlock, J as JSONSchema, M as Message, e as MessageRole, P as Permission, f as PluginError, g as Provider, h as ProviderError, i as ProviderErrorBody, R as Request, j as Response, k as ResumedSession, S as SessionData, l as SessionError, m as SessionEvent, n as SessionMetadata, o as SessionStore, p as SessionSummary, q as SessionWriter, r as StopReason, s as StreamEvent, T as TextBlock, t as ThinkingBlock, u as Tool, v as ToolCallContext, w as ToolError, x as ToolFinalEvent, y as ToolProgressEvent, z as ToolResultBlock, B as ToolStreamEvent, D as ToolUseBlock, U as Usage, W as WrongStackError, F as asBlocks, G as asText, H as isAgentError, K as isConfigError, L as isImageBlock, N as isPluginError, O as isSessionError, Q as isTextBlock, V as isThinkingBlock, X as isToolError, Y as isToolResultBlock, Z as isToolUseBlock, _ as isWrongStackError, $ as toWrongStackError } from '../context-P207fTpo.js';
|
|
2
|
+
export { P as ProviderRunner, R as RunProviderOptions } from '../provider-runner-D7lHu07L.js';
|
|
3
|
+
export { C as CONTEXT_WINDOW_MODES, a as Config, b as ConfigLoader, c as ConfigStore, d as ContextConfig, e as ContextWindowAggressiveOn, f as ContextWindowConfigLike, g as ContextWindowMode, h as ContextWindowModeId, i as ContextWindowPolicy, j as ContextWindowThresholds, D as DEFAULT_CONTEXT_WINDOW_MODE_ID, F as FeaturesConfig, L as LogConfig, M as MCPServerConfig, P as PluginConfig, k as ProviderApiKey, l as ProviderConfig, T as ToolsConfig, m as formatContextWindowModeList, n as getContextWindowMode, o as isContextWindowModeId, p as listContextWindowModes, r as resolveContextWindowPolicy } from '../config-DO2eCKgq.js';
|
|
4
|
+
export { C as CompactReport, a as Compactor } from '../compactor-CTHjZAwf.js';
|
|
5
|
+
export { P as PermissionDecision, a as PermissionPolicy, T as TrustPolicy } from '../secret-scrubber-Buo9zLGs.js';
|
|
6
|
+
export { A as AddAttachmentInput, a as Attachment, b as AttachmentKind, c as AttachmentMeta, d as AttachmentRef, e as AttachmentStore, D as DefaultSessionReader } from '../session-reader-DmOEmSkq.js';
|
|
7
|
+
export { D as DefaultSecretScrubber, a as DefaultSecretVault, S as SecretVaultOptions, d as decryptConfigSecrets, e as encryptConfigSecrets, m as migratePlaintextSecrets, r as rewriteConfigEncrypted } from '../secret-scrubber-BSgec8CU.js';
|
|
8
8
|
export { D as DefaultLogger, a as DefaultLoggerOptions } from '../logger-BH6AE0W9.js';
|
|
9
|
-
export { D as DefaultPathResolver, a as DefaultTokenCounter } from '../path-resolver-
|
|
9
|
+
export { D as DefaultPathResolver, a as DefaultTokenCounter } from '../path-resolver-mPccVA0l.js';
|
|
10
10
|
export { M as MemoryEntry, a as MemoryScope, b as MemoryStore } from '../memory-CEXuo7sz.js';
|
|
11
|
-
export { C as CompactorOptions, D as DEFAULT_RECOVERY_STRATEGIES, a as DefaultErrorHandler, b as DefaultRetryPolicy, H as HybridCompactor, R as RecoveryStrategy, T as ToolExecutor, c as buildRecoveryStrategies } from '../tool-executor-
|
|
12
|
-
export { S as SkillEntry, a as SkillLoader, b as SkillManifest } from '../skill-
|
|
13
|
-
export { B as BuildContext, M as ModelCapabilities, R as Renderer, S as SystemPromptBuilder } from '../system-prompt-
|
|
11
|
+
export { C as CompactorOptions, D as DEFAULT_RECOVERY_STRATEGIES, a as DefaultErrorHandler, b as DefaultRetryPolicy, H as HybridCompactor, R as RecoveryStrategy, T as ToolExecutor, c as buildRecoveryStrategies } from '../tool-executor-CYe5cp5U.js';
|
|
12
|
+
export { S as SkillEntry, a as SkillLoader, b as SkillManifest } from '../skill-CxuWrsKK.js';
|
|
13
|
+
export { B as BuildContext, M as ModelCapabilities, R as Renderer, S as SystemPromptBuilder } from '../system-prompt-CzY1zrbC.js';
|
|
14
14
|
export { I as InputReader, P as PromptOption } from '../input-reader-E-ffP2ee.js';
|
|
15
|
-
export { M as MCPRegistryView, a as MetricsSinkView, P as Plugin, b as PluginAPI, c as PluginCapabilities, d as PluginDependency, e as PluginPipelines, f as ProviderFactory, g as ProviderRegistryView, S as SessionWriterView, h as SlashCommand, i as SlashCommandRegistryView, j as SystemPromptContributor, T as ToolRegistryView } from '../index-
|
|
15
|
+
export { M as MCPRegistryView, a as MetricsSinkView, P as Plugin, b as PluginAPI, c as PluginCapabilities, d as PluginDependency, e as PluginPipelines, f as ProviderFactory, g as ProviderRegistryView, S as SessionWriterView, h as SlashCommand, i as SlashCommandRegistryView, j as SystemPromptContributor, T as ToolRegistryView } from '../index-BNzUUDVR.js';
|
|
16
16
|
export { D as DefaultModelsRegistry, a as DefaultModelsRegistryOptions, c as classifyFamily } from '../models-registry-DqzwpBQy.js';
|
|
17
17
|
export { D as DEFAULT_MODES, M as Mode, a as ModeConfig, b as ModeManifest, c as ModeStore } from '../mode-CV077NjV.js';
|
|
18
|
-
export { I as InMemoryAgentBridge, a as InMemoryBridgeTransport, c as createMessage } from '../agent-bridge-
|
|
19
|
-
export { C as CoordinatorEvents, a as CoordinatorStatus, D as DoneCondition, M as MultiAgentConfig, b as MultiAgentCoordinator, S as SpawnResult, c as SubagentConfig, d as SubagentContext, e as SubagentError, f as SubagentErrorKind, g as SubagentRunContext, h as SubagentRunOutcome, i as SubagentRunner, T as TaskDelegation, j as TaskResult, k as TaskSpec } from '../multi-agent-
|
|
18
|
+
export { I as InMemoryAgentBridge, a as InMemoryBridgeTransport, c as createMessage } from '../agent-bridge-BkjOkSkD.js';
|
|
19
|
+
export { C as CoordinatorEvents, a as CoordinatorStatus, D as DoneCondition, M as MultiAgentConfig, b as MultiAgentCoordinator, S as SpawnResult, c as SubagentConfig, d as SubagentContext, e as SubagentError, f as SubagentErrorKind, g as SubagentRunContext, h as SubagentRunOutcome, i as SubagentRunner, T as TaskDelegation, j as TaskResult, k as TaskSpec } from '../multi-agent-B1Nn9eC0.js';
|
|
20
20
|
export { C as CriticalPathResult, D as DEFAULT_SPEC_TEMPLATE, S as SpecAnalysis, a as SpecApiEndpoint, b as SpecRequirement, c as SpecSection, d as SpecSectionType, e as SpecStatus, f as SpecTemplate, g as SpecValidationResult, h as Specification, T as TaskAssignment, i as TaskDependency, j as TaskEdge, k as TaskFilter, l as TaskGraph, m as TaskNode, n as TaskPriority, o as TaskProgress, p as TaskSort, q as TaskStatus, r as TaskType, s as computeTaskProgress, t as findCriticalPath, u as topologicalSort } from '../task-graph-BITvWt4t.js';
|
|
21
21
|
export { A as AggregateHealth, H as HealthCheck, a as HealthCheckResult, b as HealthRegistry, c as HealthStatus, M as MetricLabels, d as MetricSeries, e as MetricsSink, f as MetricsSnapshot, S as Span, T as Tracer } from '../observability-BhnVLBLS.js';
|
|
22
|
-
import '../events-
|
|
22
|
+
import '../events-DYAbU84e.js';
|
|
23
23
|
import '../logger-BMQgxvdy.js';
|
|
24
|
+
import '../retry-policy-CnYVKGPv.js';
|
|
24
25
|
import '../models-registry-Y2xbog0E.js';
|
|
25
26
|
import '../secret-vault-DoISxaKO.js';
|
|
26
27
|
import '../path-resolver-CPRj4bFY.js';
|
package/dist/types/index.js
CHANGED
|
@@ -561,6 +561,9 @@ var DefaultTokenCounter = class {
|
|
|
561
561
|
providerId;
|
|
562
562
|
events;
|
|
563
563
|
priceCache = /* @__PURE__ */ new Map();
|
|
564
|
+
/** Most recently accounted request's tokens. Used for per-request context pressure. */
|
|
565
|
+
lastInput = 0;
|
|
566
|
+
lastCacheRead = 0;
|
|
564
567
|
constructor(opts = {}) {
|
|
565
568
|
this.registry = opts.registry;
|
|
566
569
|
this.providerId = opts.providerId;
|
|
@@ -571,6 +574,8 @@ var DefaultTokenCounter = class {
|
|
|
571
574
|
this.output += usage.output;
|
|
572
575
|
this.cacheRead += usage.cacheRead ?? 0;
|
|
573
576
|
this.cacheWrite += usage.cacheWrite ?? 0;
|
|
577
|
+
this.lastInput = usage.input;
|
|
578
|
+
this.lastCacheRead = usage.cacheRead ?? 0;
|
|
574
579
|
const price = model ? this.priceCache.get(model) : void 0;
|
|
575
580
|
if (price) {
|
|
576
581
|
this.applyPrice(usage, price);
|
|
@@ -593,6 +598,8 @@ var DefaultTokenCounter = class {
|
|
|
593
598
|
this.output += usage.output;
|
|
594
599
|
this.cacheRead += usage.cacheRead ?? 0;
|
|
595
600
|
this.cacheWrite += usage.cacheWrite ?? 0;
|
|
601
|
+
this.lastInput = usage.input;
|
|
602
|
+
this.lastCacheRead = usage.cacheRead ?? 0;
|
|
596
603
|
const price = priceFromModel(resolved);
|
|
597
604
|
this.priceCache.set(resolved.modelId, price);
|
|
598
605
|
this.applyPrice(usage, price);
|
|
@@ -605,6 +612,9 @@ var DefaultTokenCounter = class {
|
|
|
605
612
|
cacheWrite: this.cacheWrite
|
|
606
613
|
};
|
|
607
614
|
}
|
|
615
|
+
currentRequestTokens() {
|
|
616
|
+
return { input: this.lastInput, cacheRead: this.lastCacheRead };
|
|
617
|
+
}
|
|
608
618
|
estimateCost() {
|
|
609
619
|
return {
|
|
610
620
|
input: round4(this.costInput),
|
|
@@ -1583,6 +1593,112 @@ When refactoring code:
|
|
|
1583
1593
|
- Keep performance in mind \u2014 don't regress`,
|
|
1584
1594
|
tags: ["refactor", "modernization", "improvement"],
|
|
1585
1595
|
toolPreferences: ["read", "edit", "test", "git", "grep"]
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
id: "brief",
|
|
1599
|
+
name: "Brief",
|
|
1600
|
+
description: "Fast, no-nonsense \u2014 get to the point",
|
|
1601
|
+
prompt: `## Brief Mode
|
|
1602
|
+
|
|
1603
|
+
You are WrongStack, a fast, no-nonsense AI coding agent.
|
|
1604
|
+
|
|
1605
|
+
You operate inside the user's terminal. Read files, run commands, make changes \u2014 get to the point.
|
|
1606
|
+
|
|
1607
|
+
### Operating rules
|
|
1608
|
+
|
|
1609
|
+
1. **Read first.** Inspect relevant files before touching anything.
|
|
1610
|
+
2. **Edit surgically.** Use edit tool for existing files, write only for new ones.
|
|
1611
|
+
3. **One sentence before action.** State what you're doing, then do it. No preambles.
|
|
1612
|
+
4. **Say what happened.** After tool calls, one line: success, failure, or what's next.
|
|
1613
|
+
5. **Be honest.** Admit when you don't know or something failed. No fake progress.
|
|
1614
|
+
6. **Keep moving.** Task done? Stop. More work needed? State it and continue.
|
|
1615
|
+
|
|
1616
|
+
### Decision rules
|
|
1617
|
+
|
|
1618
|
+
- **Ambiguous task?** Ask. One question, get clarity, proceed.
|
|
1619
|
+
- **Clear task, unknown approach?** Pick one reasonable path, execute, report.
|
|
1620
|
+
- **Tool fails?** Retry once with adjusted params, then report.
|
|
1621
|
+
- **Permission denied?** Stop. Acknowledge. Ask what they want instead.
|
|
1622
|
+
- **Context filling up?** Compact proactively, don't wait.
|
|
1623
|
+
|
|
1624
|
+
### Output style
|
|
1625
|
+
|
|
1626
|
+
- Prose paragraphs (no bullet points unless unavoidable)
|
|
1627
|
+
- Code blocks for code, backticks for paths/commands
|
|
1628
|
+
- One-liner sufficient? One liner.
|
|
1629
|
+
- No "Great question!", "Here's what I did:", or similar filler.
|
|
1630
|
+
- Max 3 sentences per paragraph.
|
|
1631
|
+
|
|
1632
|
+
### Focus
|
|
1633
|
+
|
|
1634
|
+
Stay on task. Fix only what's asked. Don't refactor surrounding code unless explicitly requested. Own your output \u2014 don't call it "done" or "production-ready"; the user decides that.`,
|
|
1635
|
+
tags: ["fast", "concise", "direct"],
|
|
1636
|
+
toolPreferences: ["read", "edit", "bash"]
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
id: "teach",
|
|
1640
|
+
name: "Teach",
|
|
1641
|
+
description: "Mentor mode \u2014 explains why, not just what",
|
|
1642
|
+
prompt: `## Teach Mode
|
|
1643
|
+
|
|
1644
|
+
You are WrongStack, an expert AI coding mentor.
|
|
1645
|
+
|
|
1646
|
+
You operate inside the user's terminal with full access to their codebase. You help developers learn and understand \u2014 not just execute tasks, but build mental models.
|
|
1647
|
+
|
|
1648
|
+
### Teaching philosophy
|
|
1649
|
+
|
|
1650
|
+
1. **Explain the why.** When you make a change, explain why it works that way \u2014 not just what you did.
|
|
1651
|
+
2. **Build mental models.** Use analogies, highlight patterns, connect new concepts to things the user already knows.
|
|
1652
|
+
3. **Read before teaching.** Always inspect relevant files so your explanations are accurate and specific to the actual code.
|
|
1653
|
+
4. **Surgical edits with context.** When editing code, explain the approach before doing it, and what trade-offs were considered.
|
|
1654
|
+
5. **Be thorough but not verbose.** A 2-paragraph explanation beats a 5-paragraph one. Depth without padding.
|
|
1655
|
+
6. **Admit knowledge gaps.** If you're unsure, say so. Speculating teaches bad patterns.
|
|
1656
|
+
|
|
1657
|
+
### Teaching style
|
|
1658
|
+
|
|
1659
|
+
- **Before action:** Briefly explain what you're going to do and why.
|
|
1660
|
+
- **After action:** Summarize what happened and what the user should take away from this.
|
|
1661
|
+
- **With code:** Show concrete examples, explain syntax choices, point out gotchas.
|
|
1662
|
+
- **With errors:** Explain why the error occurred, what it's actually complaining about, and how to avoid it in the future.
|
|
1663
|
+
- **General principles:** Offer them when the user's question suggests a deeper concept they'd benefit from understanding.
|
|
1664
|
+
|
|
1665
|
+
### Decision heuristics
|
|
1666
|
+
|
|
1667
|
+
- **Task is ambiguous?** Ask \u2014 but frame the question as "what would you like to learn from this?"
|
|
1668
|
+
- **Task is clear, approach is unknown?** Execute, then teach the approach as you go.
|
|
1669
|
+
- **Tool fails?** Explain what failed, why it failed, and how to avoid the failure.
|
|
1670
|
+
- **User asks "how do I...?"** Don't just give the answer \u2014 explain the underlying mechanism.
|
|
1671
|
+
- **Context window filling up?** Compact, but summarize what was lost so the teaching continuity isn't broken.
|
|
1672
|
+
|
|
1673
|
+
### Output format
|
|
1674
|
+
|
|
1675
|
+
- Use headings to structure multi-concept explanations.
|
|
1676
|
+
- Code blocks with brief annotations for code examples.
|
|
1677
|
+
- **Bold** key terms and concepts worth remembering.
|
|
1678
|
+
- Callouts like "Key takeaway:" or "Pattern:" to anchor learning.
|
|
1679
|
+
- Max 3 sentences per paragraph \u2014 readability over completeness.
|
|
1680
|
+
|
|
1681
|
+
### Don'ts
|
|
1682
|
+
|
|
1683
|
+
- Don't lecture condescendingly \u2014 the user is a developer, not a beginner.
|
|
1684
|
+
- Don't pad explanations with obvious things.
|
|
1685
|
+
- Don't skip the "why" \u2014 even quick tasks deserve one sentence of context.
|
|
1686
|
+
- Don't just say "do X" \u2014 say "do X because Y."
|
|
1687
|
+
- Don't leave the user hanging after a complex operation \u2014 explain what just happened.
|
|
1688
|
+
|
|
1689
|
+
### Core principles
|
|
1690
|
+
|
|
1691
|
+
You follow these principles, but always with explanation:
|
|
1692
|
+
- Read before write
|
|
1693
|
+
- Surgical edits over rewrites
|
|
1694
|
+
- Show your work (explain your reasoning, not just mechanical steps)
|
|
1695
|
+
- Be honest about limits
|
|
1696
|
+
- Format for scanability
|
|
1697
|
+
- Recover explicitly from failures
|
|
1698
|
+
|
|
1699
|
+
Remember: your job is to make the user a better developer, not just to complete tasks faster.`,
|
|
1700
|
+
tags: ["teaching", "mentor", "learning"],
|
|
1701
|
+
toolPreferences: ["read", "edit", "explain"]
|
|
1586
1702
|
}
|
|
1587
1703
|
];
|
|
1588
1704
|
|