anchi-kit 1.2.0 → 1.2.1
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/.antigravity/skills/article-extractor/SKILL.md +52 -0
- package/.antigravity/skills/artifacts-builder/SKILL.md +63 -0
- package/.antigravity/skills/aws-deployment/SKILL.md +85 -0
- package/.antigravity/skills/brainstorming/SKILL.md +73 -0
- package/.antigravity/skills/canvas-design/SKILL.md +62 -0
- package/.antigravity/skills/changelog-generator/SKILL.md +149 -0
- package/.antigravity/skills/changelog-generator/assets/changelog-template.md +60 -0
- package/.antigravity/skills/changelog-generator/scripts/generate-changelog.js +181 -0
- package/.antigravity/skills/claude-code/references/advanced-features.md +399 -0
- package/.antigravity/skills/claude-code/references/agent-skills.md +399 -0
- package/.antigravity/skills/claude-code/references/api-reference.md +498 -0
- package/.antigravity/skills/claude-code/references/best-practices.md +447 -0
- package/.antigravity/skills/claude-code/references/cicd-integration.md +428 -0
- package/.antigravity/skills/claude-code/references/common-workflows.md +119 -0
- package/.antigravity/skills/claude-code/references/configuration.md +480 -0
- package/.antigravity/skills/claude-code/references/enterprise-features.md +472 -0
- package/.antigravity/skills/claude-code/references/getting-started.md +252 -0
- package/.antigravity/skills/claude-code/references/hooks-and-plugins.md +444 -0
- package/.antigravity/skills/claude-code/references/hooks-comprehensive.md +622 -0
- package/.antigravity/skills/claude-code/references/ide-integration.md +316 -0
- package/.antigravity/skills/claude-code/references/mcp-integration.md +386 -0
- package/.antigravity/skills/claude-code/references/slash-commands.md +489 -0
- package/.antigravity/skills/claude-code/references/troubleshooting.md +456 -0
- package/.antigravity/skills/claude-code/skill.md +60 -0
- package/.antigravity/skills/code-quality/SKILL.md +273 -0
- package/.antigravity/skills/comprehensive-review/complexity.md +11 -0
- package/.antigravity/skills/comprehensive-review/index.yaml +19 -0
- package/.antigravity/skills/comprehensive-review/maintainability.md +12 -0
- package/.antigravity/skills/comprehensive-review/readability.md +12 -0
- package/.antigravity/skills/content-research-writer/SKILL.md +65 -0
- package/.antigravity/skills/csv-data-analyzer/SKILL.md +91 -0
- package/.antigravity/skills/d3-visualization/SKILL.md +65 -0
- package/.antigravity/skills/debugging/references/root-cause-analysis-methods.md +140 -0
- package/.antigravity/skills/engineering-discipline/incremental-change.md +15 -0
- package/.antigravity/skills/engineering-discipline/index.yaml +30 -0
- package/.antigravity/skills/engineering-discipline/planning-first.md +18 -0
- package/.antigravity/skills/engineering-discipline/reasoning-clarity.md +19 -0
- package/.antigravity/skills/engineering-discipline/verify-before-commit.md +17 -0
- package/.antigravity/skills/file-organizer/SKILL.md +64 -0
- package/.antigravity/skills/git-automation/SKILL.md +68 -0
- package/.antigravity/skills/git-automation/references/branch-finishing.md +64 -0
- package/.antigravity/skills/impact-scoring/SKILL.md +219 -0
- package/.antigravity/skills/kaizen/SKILL.md +94 -0
- package/.antigravity/skills/performance-patterns/SKILL.md +209 -0
- package/.antigravity/skills/playwright-testing/SKILL.md +115 -0
- package/.antigravity/skills/playwright-testing/references/playwright-patterns.md +122 -0
- package/.antigravity/skills/prompt-engineering/SKILL.md +126 -0
- package/.antigravity/skills/prompt-engineering/references/anthropic-best-practices.md +160 -0
- package/.antigravity/skills/pypict-testing/SKILL.md +79 -0
- package/.antigravity/skills/review-implementing/SKILL.md +287 -0
- package/.antigravity/skills/security-audit/SKILL.md +263 -0
- package/.antigravity/skills/software-architecture/SKILL.md +91 -0
- package/.antigravity/skills/software-architecture/references/solid-principles.md +293 -0
- package/.antigravity/skills/subagent-driven-development/SKILL.md +237 -0
- package/.antigravity/skills/test-driven-development/SKILL.md +130 -0
- package/.antigravity/skills/test-driven-development/references/tdd-patterns.md +124 -0
- package/.antigravity/skills/test-driven-development/references/testing-strategies.md +131 -0
- package/.antigravity/skills/test-fixing/SKILL.md +256 -0
- package/.antigravity/skills/theme-factory/SKILL.md +63 -0
- package/.antigravity/workflows/clean.md +333 -0
- package/.antigravity/workflows/health.md +228 -0
- package/.cursor/skills/_packs/common/pack-architecture.md +40 -0
- package/.cursor/skills/_packs/common/pack-devops.md +43 -0
- package/.cursor/skills/_packs/common/pack-productivity.md +37 -0
- package/.cursor/skills/_packs/common/pack-quality.md +41 -0
- package/.cursor/skills/_packs/data/pack-ai.md +41 -0
- package/.cursor/skills/_packs/data/pack-data-science.md +36 -0
- package/.cursor/skills/_packs/mobile/pack-mobile.md +40 -0
- package/.cursor/skills/_packs/web/pack-backend.md +61 -0
- package/.cursor/skills/_packs/web/pack-frontend.md +66 -0
- package/.cursor/skills/_packs/web3/pack-blockchain.md +37 -0
- package/.cursor/skills/advanced-coding/references/getting-started.md +93 -0
- package/.cursor/skills/advanced-coding/skill.md +34 -0
- package/.cursor/skills/template-skill/SKILL.md +6 -0
- package/README.md +1 -1
- package/docs/reference/SECURITY.md +1 -1
- package/package.json +2 -2
- package/src/cli.js +5 -5
- package/src/commands/dashboard.js +3 -3
- package/src/commands/init.js +15 -3
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { execSync } = require('child_process');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Changelog Generator
|
|
9
|
+
* Generates a changelog from git commits using conventional commit format
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// Get the latest tag
|
|
13
|
+
function getLatestTag() {
|
|
14
|
+
try {
|
|
15
|
+
return execSync('git describe --tags --abbrev=0', { encoding: 'utf-8' }).trim();
|
|
16
|
+
} catch (error) {
|
|
17
|
+
console.log('No previous tags found, using all commits');
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Get commits since last tag
|
|
23
|
+
function getCommits(sinceTag) {
|
|
24
|
+
const range = sinceTag ? `${sinceTag}..HEAD` : 'HEAD';
|
|
25
|
+
const command = `git log ${range} --pretty=format:"%h|%s|%an|%ad" --date=short --no-merges`;
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
const output = execSync(command, { encoding: 'utf-8' });
|
|
29
|
+
return output.split('\n').filter(line => line.trim());
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error('Error fetching commits:', error.message);
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Parse conventional commit
|
|
37
|
+
function parseCommit(commitLine) {
|
|
38
|
+
const [hash, message, author, date] = commitLine.split('|');
|
|
39
|
+
const match = message.match(/^(\w+)(\(.+\))?:\s*(.+)$/);
|
|
40
|
+
|
|
41
|
+
if (!match) {
|
|
42
|
+
return { type: 'other', hash, message, author, date };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const [, type, scope, description] = match;
|
|
46
|
+
return {
|
|
47
|
+
type: type.toLowerCase(),
|
|
48
|
+
scope: scope ? scope.slice(1, -1) : null,
|
|
49
|
+
description,
|
|
50
|
+
hash,
|
|
51
|
+
author,
|
|
52
|
+
date
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Categorize commits
|
|
57
|
+
function categorizeCommits(commits) {
|
|
58
|
+
const categories = {
|
|
59
|
+
added: [],
|
|
60
|
+
fixed: [],
|
|
61
|
+
changed: [],
|
|
62
|
+
deprecated: [],
|
|
63
|
+
removed: [],
|
|
64
|
+
security: [],
|
|
65
|
+
other: []
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
commits.forEach(commit => {
|
|
69
|
+
const parsed = parseCommit(commit);
|
|
70
|
+
|
|
71
|
+
switch (parsed.type) {
|
|
72
|
+
case 'feat':
|
|
73
|
+
categories.added.push(parsed);
|
|
74
|
+
break;
|
|
75
|
+
case 'fix':
|
|
76
|
+
categories.fixed.push(parsed);
|
|
77
|
+
break;
|
|
78
|
+
case 'refactor':
|
|
79
|
+
case 'perf':
|
|
80
|
+
case 'style':
|
|
81
|
+
categories.changed.push(parsed);
|
|
82
|
+
break;
|
|
83
|
+
case 'security':
|
|
84
|
+
categories.security.push(parsed);
|
|
85
|
+
break;
|
|
86
|
+
case 'docs':
|
|
87
|
+
case 'test':
|
|
88
|
+
case 'chore':
|
|
89
|
+
// Skip these or add to other
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
if (parsed.message.toLowerCase().includes('deprecate')) {
|
|
93
|
+
categories.deprecated.push(parsed);
|
|
94
|
+
} else if (parsed.message.toLowerCase().includes('remove')) {
|
|
95
|
+
categories.removed.push(parsed);
|
|
96
|
+
} else {
|
|
97
|
+
categories.other.push(parsed);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
return categories;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Generate changelog markdown
|
|
106
|
+
function generateChangelog(categories, version, date) {
|
|
107
|
+
let changelog = `# Changelog\n\n`;
|
|
108
|
+
changelog += `## [${version}] - ${date}\n\n`;
|
|
109
|
+
|
|
110
|
+
const sections = [
|
|
111
|
+
{ key: 'added', title: 'Added', icon: '✨' },
|
|
112
|
+
{ key: 'fixed', title: 'Fixed', icon: '🐛' },
|
|
113
|
+
{ key: 'changed', title: 'Changed', icon: '🔄' },
|
|
114
|
+
{ key: 'deprecated', title: 'Deprecated', icon: '⚠️' },
|
|
115
|
+
{ key: 'removed', title: 'Removed', icon: '🗑️' },
|
|
116
|
+
{ key: 'security', title: 'Security', icon: '🔒' }
|
|
117
|
+
];
|
|
118
|
+
|
|
119
|
+
sections.forEach(({ key, title, icon }) => {
|
|
120
|
+
if (categories[key].length > 0) {
|
|
121
|
+
changelog += `### ${icon} ${title}\n\n`;
|
|
122
|
+
categories[key].forEach(commit => {
|
|
123
|
+
const scope = commit.scope ? `**${commit.scope}**: ` : '';
|
|
124
|
+
changelog += `- ${scope}${commit.description} ([${commit.hash}](../../commit/${commit.hash}))\n`;
|
|
125
|
+
});
|
|
126
|
+
changelog += '\n';
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
return changelog;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Main function
|
|
134
|
+
function main() {
|
|
135
|
+
console.log('🚀 Generating changelog...\n');
|
|
136
|
+
|
|
137
|
+
const latestTag = getLatestTag();
|
|
138
|
+
const commits = getCommits(latestTag);
|
|
139
|
+
|
|
140
|
+
if (commits.length === 0) {
|
|
141
|
+
console.log('No new commits found.');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
console.log(`Found ${commits.length} commits since ${latestTag || 'beginning'}\n`);
|
|
146
|
+
|
|
147
|
+
const categories = categorizeCommits(commits);
|
|
148
|
+
const version = process.env.VERSION || 'Unreleased';
|
|
149
|
+
const date = new Date().toISOString().split('T')[0];
|
|
150
|
+
|
|
151
|
+
const changelogContent = generateChangelog(categories, version, date);
|
|
152
|
+
|
|
153
|
+
// Read existing CHANGELOG.md or create new
|
|
154
|
+
const changelogPath = path.join(process.cwd(), 'CHANGELOG.md');
|
|
155
|
+
let existingChangelog = '';
|
|
156
|
+
|
|
157
|
+
if (fs.existsSync(changelogPath)) {
|
|
158
|
+
existingChangelog = fs.readFileSync(changelogPath, 'utf-8');
|
|
159
|
+
// Remove the header to avoid duplication
|
|
160
|
+
existingChangelog = existingChangelog.replace(/^# Changelog\n\n/, '');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Prepend new changelog
|
|
164
|
+
const finalChangelog = changelogContent + existingChangelog;
|
|
165
|
+
|
|
166
|
+
fs.writeFileSync(changelogPath, finalChangelog);
|
|
167
|
+
|
|
168
|
+
console.log(`✅ Changelog updated: ${changelogPath}`);
|
|
169
|
+
console.log(`\n📝 Summary:`);
|
|
170
|
+
console.log(` Added: ${categories.added.length}`);
|
|
171
|
+
console.log(` Fixed: ${categories.fixed.length}`);
|
|
172
|
+
console.log(` Changed: ${categories.changed.length}`);
|
|
173
|
+
console.log(` Security: ${categories.security.length}`);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Run if called directly
|
|
177
|
+
if (require.main === module) {
|
|
178
|
+
main();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
module.exports = { getCommits, parseCommit, categorizeCommits, generateChangelog };
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
# Advanced Features
|
|
2
|
+
|
|
3
|
+
Extended thinking, prompt caching, checkpointing, and memory management in Cursor.
|
|
4
|
+
|
|
5
|
+
## Extended Thinking
|
|
6
|
+
|
|
7
|
+
Deep reasoning for complex problems.
|
|
8
|
+
|
|
9
|
+
### Enable Extended Thinking
|
|
10
|
+
|
|
11
|
+
**Global configuration:**
|
|
12
|
+
```bash
|
|
13
|
+
claude config set thinking.enabled true
|
|
14
|
+
claude config set thinking.budget 15000
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Project settings (.cursor/settings.json):**
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"thinking": {
|
|
21
|
+
"enabled": true,
|
|
22
|
+
"budget": 10000,
|
|
23
|
+
"mode": "auto"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Command-line flag:**
|
|
29
|
+
```bash
|
|
30
|
+
claude --thinking "architect microservices system"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Thinking Modes
|
|
34
|
+
|
|
35
|
+
**auto**: Claude decides when to use extended thinking
|
|
36
|
+
**manual**: User explicitly requests thinking
|
|
37
|
+
**disabled**: No extended thinking
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"thinking": {
|
|
42
|
+
"mode": "auto",
|
|
43
|
+
"budget": 10000,
|
|
44
|
+
"minComplexity": 0.7
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Budget Control
|
|
50
|
+
|
|
51
|
+
Set token budget for thinking:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"thinking": {
|
|
56
|
+
"budget": 10000, // Max tokens for thinking
|
|
57
|
+
"budgetPerRequest": 5000, // Per-request limit
|
|
58
|
+
"adaptive": true // Adjust based on task complexity
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Best Use Cases
|
|
64
|
+
|
|
65
|
+
- Architecture design
|
|
66
|
+
- Complex algorithm development
|
|
67
|
+
- System refactoring
|
|
68
|
+
- Performance optimization
|
|
69
|
+
- Security analysis
|
|
70
|
+
- Bug investigation
|
|
71
|
+
|
|
72
|
+
### Example
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
claude --thinking "Design a distributed caching system with:
|
|
76
|
+
- High availability
|
|
77
|
+
- Consistency guarantees
|
|
78
|
+
- Horizontal scalability
|
|
79
|
+
- Fault tolerance"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Prompt Caching
|
|
83
|
+
|
|
84
|
+
Reduce costs by caching repeated context.
|
|
85
|
+
|
|
86
|
+
### Enable Caching
|
|
87
|
+
|
|
88
|
+
**API usage:**
|
|
89
|
+
```typescript
|
|
90
|
+
const response = await client.messages.create({
|
|
91
|
+
model: 'claude-sonnet-4-5-20250929',
|
|
92
|
+
system: [
|
|
93
|
+
{
|
|
94
|
+
type: 'text',
|
|
95
|
+
text: 'You are a coding assistant...',
|
|
96
|
+
cache_control: { type: 'ephemeral' }
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
messages: [...]
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**CLI configuration:**
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"caching": {
|
|
107
|
+
"enabled": true,
|
|
108
|
+
"ttl": 300,
|
|
109
|
+
"maxSize": "100MB"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Cache Strategy
|
|
115
|
+
|
|
116
|
+
**What to cache:**
|
|
117
|
+
- Large codebases
|
|
118
|
+
- Documentation
|
|
119
|
+
- API specifications
|
|
120
|
+
- System prompts
|
|
121
|
+
- Project context
|
|
122
|
+
|
|
123
|
+
**What not to cache:**
|
|
124
|
+
- User queries
|
|
125
|
+
- Dynamic content
|
|
126
|
+
- Temporary data
|
|
127
|
+
- Session-specific info
|
|
128
|
+
|
|
129
|
+
### Cache Control
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// Cache large context
|
|
133
|
+
{
|
|
134
|
+
type: 'text',
|
|
135
|
+
text: largeCodebase,
|
|
136
|
+
cache_control: { type: 'ephemeral' }
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Update without invalidating cache
|
|
140
|
+
{
|
|
141
|
+
type: 'text',
|
|
142
|
+
text: newUserQuery
|
|
143
|
+
// No cache_control = not cached
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Cost Savings
|
|
148
|
+
|
|
149
|
+
With caching:
|
|
150
|
+
- First request: Full cost
|
|
151
|
+
- Subsequent requests: ~90% discount on cached tokens
|
|
152
|
+
- Cache TTL: 5 minutes
|
|
153
|
+
|
|
154
|
+
Example:
|
|
155
|
+
```
|
|
156
|
+
Without caching:
|
|
157
|
+
Request 1: 10,000 tokens @ $3/M = $0.03
|
|
158
|
+
Request 2: 10,000 tokens @ $3/M = $0.03
|
|
159
|
+
Total: $0.06
|
|
160
|
+
|
|
161
|
+
With caching (8,000 tokens cached):
|
|
162
|
+
Request 1: 10,000 tokens @ $3/M = $0.03
|
|
163
|
+
Request 2: 2,000 new + 8,000 cached @ $0.30/M = $0.0024
|
|
164
|
+
Total: $0.0324 (46% savings)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Checkpointing
|
|
168
|
+
|
|
169
|
+
Automatically track and rewind changes.
|
|
170
|
+
|
|
171
|
+
### Enable Checkpointing
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
claude config set checkpointing.enabled true
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Settings:**
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"checkpointing": {
|
|
181
|
+
"enabled": true,
|
|
182
|
+
"autoSave": true,
|
|
183
|
+
"interval": 300,
|
|
184
|
+
"maxCheckpoints": 50
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### View Checkpoints
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# List checkpoints
|
|
193
|
+
claude checkpoint list
|
|
194
|
+
|
|
195
|
+
# View checkpoint details
|
|
196
|
+
claude checkpoint show checkpoint-123
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Restore Checkpoint
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Restore to checkpoint
|
|
203
|
+
claude checkpoint restore checkpoint-123
|
|
204
|
+
|
|
205
|
+
# Restore to time
|
|
206
|
+
claude checkpoint restore --time "2025-11-06T10:00:00Z"
|
|
207
|
+
|
|
208
|
+
# Restore specific files
|
|
209
|
+
claude checkpoint restore checkpoint-123 --files src/main.js
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Create Manual Checkpoint
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Create checkpoint with message
|
|
216
|
+
claude checkpoint create "before refactoring auth module"
|
|
217
|
+
|
|
218
|
+
# Create at important moments
|
|
219
|
+
claude checkpoint create "working state before experiment"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Checkpoint Strategies
|
|
223
|
+
|
|
224
|
+
**Auto-save checkpoints:**
|
|
225
|
+
- Before major changes
|
|
226
|
+
- After successful tests
|
|
227
|
+
- Every N minutes
|
|
228
|
+
- Before destructive operations
|
|
229
|
+
|
|
230
|
+
**Manual checkpoints:**
|
|
231
|
+
- Before risky refactors
|
|
232
|
+
- At working states
|
|
233
|
+
- Before experiments
|
|
234
|
+
- After milestones
|
|
235
|
+
|
|
236
|
+
### Example Workflow
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# Create checkpoint before risky change
|
|
240
|
+
claude checkpoint create "before performance optimization"
|
|
241
|
+
|
|
242
|
+
# Make changes
|
|
243
|
+
claude "optimize database queries for 10x performance"
|
|
244
|
+
|
|
245
|
+
# If something breaks
|
|
246
|
+
claude checkpoint restore "before performance optimization"
|
|
247
|
+
|
|
248
|
+
# Or continue with improvements
|
|
249
|
+
claude checkpoint create "performance optimization complete"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Memory Management
|
|
253
|
+
|
|
254
|
+
Control how Claude remembers context across sessions.
|
|
255
|
+
|
|
256
|
+
### Memory Locations
|
|
257
|
+
|
|
258
|
+
**global**: Share memory across all projects
|
|
259
|
+
**project**: Project-specific memory
|
|
260
|
+
**none**: Disable memory
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Set memory location
|
|
264
|
+
claude config set memory.location project
|
|
265
|
+
|
|
266
|
+
# Enable memory
|
|
267
|
+
claude config set memory.enabled true
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Configuration
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"memory": {
|
|
275
|
+
"enabled": true,
|
|
276
|
+
"location": "project",
|
|
277
|
+
"ttl": 86400,
|
|
278
|
+
"maxSize": "10MB",
|
|
279
|
+
"autoSummarize": true
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Memory Operations
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# View stored memories
|
|
288
|
+
claude memory list
|
|
289
|
+
|
|
290
|
+
# View specific memory
|
|
291
|
+
claude memory show memory-123
|
|
292
|
+
|
|
293
|
+
# Clear all memories
|
|
294
|
+
claude memory clear
|
|
295
|
+
|
|
296
|
+
# Clear old memories
|
|
297
|
+
claude memory clear --older-than 7d
|
|
298
|
+
|
|
299
|
+
# Clear project memories
|
|
300
|
+
claude memory clear --project
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### What Gets Remembered
|
|
304
|
+
|
|
305
|
+
**Automatically:**
|
|
306
|
+
- Project structure
|
|
307
|
+
- Coding patterns
|
|
308
|
+
- Preferences
|
|
309
|
+
- Common commands
|
|
310
|
+
- File locations
|
|
311
|
+
|
|
312
|
+
**Explicitly stored:**
|
|
313
|
+
- Important context
|
|
314
|
+
- Design decisions
|
|
315
|
+
- Architecture notes
|
|
316
|
+
- Team conventions
|
|
317
|
+
|
|
318
|
+
### Memory Best Practices
|
|
319
|
+
|
|
320
|
+
**Project memory:**
|
|
321
|
+
- Good for project-specific context
|
|
322
|
+
- Shares across team members
|
|
323
|
+
- Persists in `.cursor/memory/`
|
|
324
|
+
- Commit to version control (optional)
|
|
325
|
+
|
|
326
|
+
**Global memory:**
|
|
327
|
+
- Personal preferences
|
|
328
|
+
- General knowledge
|
|
329
|
+
- Common patterns
|
|
330
|
+
- Cross-project learnings
|
|
331
|
+
|
|
332
|
+
**Disable memory when:**
|
|
333
|
+
- Working with sensitive data
|
|
334
|
+
- One-off tasks
|
|
335
|
+
- Testing/experimentation
|
|
336
|
+
- Troubleshooting
|
|
337
|
+
|
|
338
|
+
### Example
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
# Remember project architecture
|
|
342
|
+
claude "Remember: This project uses Clean Architecture with:
|
|
343
|
+
- Domain layer (core business logic)
|
|
344
|
+
- Application layer (use cases)
|
|
345
|
+
- Infrastructure layer (external dependencies)
|
|
346
|
+
- Presentation layer (API/UI)"
|
|
347
|
+
|
|
348
|
+
# Claude will recall this in future sessions
|
|
349
|
+
claude "Add a new user registration feature"
|
|
350
|
+
# Claude: "I'll implement this following the Clean Architecture..."
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Context Windows
|
|
354
|
+
|
|
355
|
+
Manage large context effectively.
|
|
356
|
+
|
|
357
|
+
### Maximum Context
|
|
358
|
+
|
|
359
|
+
Model context limits:
|
|
360
|
+
- Claude Sonnet: 200k tokens
|
|
361
|
+
- Claude Opus: 200k tokens
|
|
362
|
+
- Claude Haiku: 200k tokens
|
|
363
|
+
|
|
364
|
+
### Context Management
|
|
365
|
+
|
|
366
|
+
```json
|
|
367
|
+
{
|
|
368
|
+
"context": {
|
|
369
|
+
"maxTokens": 200000,
|
|
370
|
+
"autoTruncate": true,
|
|
371
|
+
"prioritize": ["recent", "relevant"],
|
|
372
|
+
"summarizeLong": true
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Strategies
|
|
378
|
+
|
|
379
|
+
**Summarization:**
|
|
380
|
+
- Auto-summarize old context
|
|
381
|
+
- Keep summaries of large files
|
|
382
|
+
- Compress conversation history
|
|
383
|
+
|
|
384
|
+
**Prioritization:**
|
|
385
|
+
- Recent messages first
|
|
386
|
+
- Most relevant files
|
|
387
|
+
- Explicit user priorities
|
|
388
|
+
|
|
389
|
+
**Chunking:**
|
|
390
|
+
- Process large codebases in chunks
|
|
391
|
+
- Incremental analysis
|
|
392
|
+
- Parallel processing
|
|
393
|
+
|
|
394
|
+
## See Also
|
|
395
|
+
|
|
396
|
+
- Pricing: https://docs.cursor.com/about-claude/pricing
|
|
397
|
+
- Token counting: https://docs.cursor.com/build-with-claude/token-counting
|
|
398
|
+
- Best practices: `references/best-practices.md`
|
|
399
|
+
- Configuration: `references/configuration.md`
|