From 41eba70cfa8153e7ba41a2743177bd5881395667 Mon Sep 17 00:00:00 2001 From: bl-ue <54780737+bl-ue@users.noreply.github.com> Date: Wed, 19 Nov 2025 10:13:55 -0700 Subject: [PATCH] Add a script to update the prompts --- README.md | 30 +- scripts/updatePrompts.js | 470 ++++++++++++++++++ .../agent-prompt-claudemd-creation.md | 4 +- .../agent-prompt-prompt-hook-execution.md | 4 +- .../agent-prompt-security-review-slash.md | 4 +- .../agent-prompt-status-line-setup.md | 4 +- .../agent-prompt-webfetch-summarizer.md | 4 +- ...-actions-workflow-for-@claude-mentions.md} | 4 +- ...workflow-for-automated-code-review-beta.md | 4 +- system-prompts/system-prompt-learning-mode.md | 4 +- .../system-prompt-main-system-prompt.md | 4 +- system-prompts/tool-description-bash.md | 2 +- .../tool-description-exitplanmode-v2.md | 4 +- .../tool-description-exitplanmode.md | 4 +- system-prompts/tool-description-task.md | 1 + 15 files changed, 498 insertions(+), 49 deletions(-) create mode 100644 scripts/updatePrompts.js rename system-prompts/{data-github-actions-workflow-for-claude-mentions.md => data-github-actions-workflow-for-@claude-mentions.md} (95%) diff --git a/README.md b/README.md index fcd46a8..a3b57f2 100644 --- a/README.md +++ b/README.md @@ -37,37 +37,37 @@ Sub-agents and utilities. ### Creation Assistants - [Agent Prompt: Agent creation architect](./system-prompts/agent-prompt-agent-creation-architect.md) (**1111** tks) - System prompt for creating custom AI agents with detailed specifications. -- [Agent Prompt: CLAUDE.md creation](./system-prompts/agent-prompt-claudemd-creation.md) (**384** tks) - System prompt for analyzing codebases and creating CLAUDE.md documentation. -- [Agent Prompt: Status line setup](./system-prompts/agent-prompt-status-line-setup.md) (**993** tks) - System prompt for the statusline-setup agent that configures status line. +- [Agent Prompt: CLAUDE.md creation](./system-prompts/agent-prompt-claudemd-creation.md) (**384** tks) - System prompt for analyzing codebases and creating CLAUDE.md documentation files. +- [Agent Prompt: Status line setup](./system-prompts/agent-prompt-status-line-setup.md) (**993** tks) - System prompt for the statusline-setup agent that configures status line display. ### Slash commands - [Agent Prompt: /pr-comments slash command](./system-prompts/agent-prompt-pr-comments-slash-command.md) (**404** tks) - System prompt for fetching and displaying GitHub PR comments. - [Agent Prompt: /review-pr slash command](./system-prompts/agent-prompt-review-pr-slash-command.md) (**245** tks) - System prompt for reviewing GitHub pull requests with code analysis. -- [Agent Prompt: /security-review slash](./system-prompts/agent-prompt-security-review-slash.md) (**2614** tks) - Comprehensive security review prompt for analyzing code changes with focus on. +- [Agent Prompt: /security-review slash](./system-prompts/agent-prompt-security-review-slash.md) (**2614** tks) - Comprehensive security review prompt for analyzing code changes with focus on exploitable vulnerabilities. ### Utilities - [Agent Prompt: Bash command file path extraction](./system-prompts/agent-prompt-bash-command-file-path-extraction.md) (**286** tks) - System prompt for extracting file paths from bash command output. - [Agent Prompt: Bash command prefix detection](./system-prompts/agent-prompt-bash-command-prefix-detection.md) (**835** tks) - System prompt for detecting command prefixes and command injection. - [Agent Prompt: Bash output summarization](./system-prompts/agent-prompt-bash-output-summarization.md) (**605** tks) - System prompt for determining whether bash command output should be summarized. -- [Agent Prompt: Conversation summarization](./system-prompts/agent-prompt-conversation-summarization.md) (**1121** tks) - System prompt for creating detailed conversation summaries. - [Agent Prompt: Conversation summarization with additional instructions](./system-prompts/agent-prompt-conversation-summarization-with-additional-instructions.md) (**1133** tks) - Extended summarization prompt with support for custom additional instructions. -- [Agent Prompt: Prompt Hook execution](./system-prompts/agent-prompt-prompt-hook-execution.md) (**134** tks) - Prompt given to Claude when acting evaluating whether to pass or fail a prompt. +- [Agent Prompt: Conversation summarization](./system-prompts/agent-prompt-conversation-summarization.md) (**1121** tks) - System prompt for creating detailed conversation summaries. +- [Agent Prompt: Prompt Hook execution](./system-prompts/agent-prompt-prompt-hook-execution.md) (**134** tks) - Prompt given to Claude when acting evaluating whether to pass or fail a prompt hook.. - [Agent Prompt: Session notes template](./system-prompts/agent-prompt-session-notes-template.md) (**226** tks) - Template structure for session notes tracking coding work and decisions. - [Agent Prompt: Session notes update instructions](./system-prompts/agent-prompt-session-notes-update-instructions.md) (**730** tks) - Instructions for updating session notes files during conversations. - [Agent Prompt: Session title generation](./system-prompts/agent-prompt-session-title-generation.md) (**159** tks) - System prompt for generating succinct titles for coding sessions. -- [Agent Prompt: Update Magic Docs](./system-prompts/agent-prompt-update-magic-docs.md) (**718** tks) - Prompt for the magic-docs agent. +- [Agent Prompt: Update Magic Docs](./system-prompts/agent-prompt-update-magic-docs.md) (**718** tks) - Prompt for the magic-docs agent.. - [Agent Prompt: User sentiment analysis](./system-prompts/agent-prompt-user-sentiment-analysis.md) (**205** tks) - System prompt for analyzing user frustration and PR creation requests. -- [Agent Prompt: WebFetch summarizer](./system-prompts/agent-prompt-webfetch-summarizer.md) (**147** tks) - Prompt for agent that summarizes verbose output from WebFetch for the main. +- [Agent Prompt: WebFetch summarizer](./system-prompts/agent-prompt-webfetch-summarizer.md) (**147** tks) - Prompt for agent that summarizes verbose output from WebFetch for the main model. @@ -75,9 +75,9 @@ Misc large strings. Parts of the main system prompt. -- [**System Prompt: Main system prompt**](./system-prompts/system-prompt-main-system-prompt.md) (**2601** tks) - Core system prompt for Claude Code defining behavior, tone, and tool usage. -- [System Prompt: Learning mode](./system-prompts/system-prompt-learning-mode.md) (**1042** tks) - System Prompt: Main system prompt for learning mode with human collaboration. +- [**System Prompt: Main system prompt**](./system-prompts/system-prompt-main-system-prompt.md) (**2601** tks) - Core system prompt for Claude Code defining behavior, tone, and tool usage policies. - [System Prompt: Learning mode (insights)](./system-prompts/system-prompt-learning-mode-insights.md) (**142** tks) - Instructions for providing educational insights when learning mode is active. +- [System Prompt: Learning mode](./system-prompts/system-prompt-learning-mode.md) (**1042** tks) - System Prompt: Main system prompt for learning mode with human collaboration instructions. - [System Prompt: MCP CLI](./system-prompts/system-prompt-mcp-cli.md) (**1357** tks) - Instructions for using mcp-cli to interact with Model Context Protocol servers. ### System Reminders @@ -87,19 +87,19 @@ Text for large system reminders. > [!NOTE] > Note that we're planning to add a **system reminder creator/editor** to [tweakcc](https://github.com/Piebald-AI/tweakcc); :+1: [this issue](https://github.com/Piebald-AI/tweakcc/issues/113) if you're interested in that idea. -- [System Reminder: Plan mode is active](./system-prompts/system-reminder-plan-mode-is-active.md) (**242** tks) - System reminder sent to Claude when the user enters plan mode. - [System Reminder: Plan mode is active (enhanced)](./system-prompts/system-reminder-plan-mode-is-active-enhanced.md) (**1093** tks) - Enhanced plan mode system reminder. - [System Reminder: Plan mode is active (for subagents)](./system-prompts/system-reminder-plan-mode-is-active-for-subagents.md) (**310** tks) - Simplified plan mode system reminder for sub agents. +- [System Reminder: Plan mode is active](./system-prompts/system-reminder-plan-mode-is-active.md) (**242** tks) - System reminder sent to Claude when the user enters plan mode. ### Builtin Tool Descriptions - [Tool Description: Bash](./system-prompts/tool-description-bash.md) (**1074** tks) - Description for the Bash tool, which allows Claude to run shell commands. - [Tool Description: Edit](./system-prompts/tool-description-edit.md) (**278** tks) - Tool description for performing exact string replacements in files. -- [Tool Description: ExitPlanMode](./system-prompts/tool-description-exitplanmode.md) (**342** tks) - Description for the ExitPlanMode tool, which presents a plan dialog for the. -- [Tool Description: ExitPlanMode v2](./system-prompts/tool-description-exitplanmode-v2.md) (**450** tks) - V2 description for the ExitPlanMode tool, which presents a plan dialog for the. +- [Tool Description: ExitPlanMode v2](./system-prompts/tool-description-exitplanmode-v2.md) (**450** tks) - V2 description for the ExitPlanMode tool, which presents a plan dialog for the user to approve. +- [Tool Description: ExitPlanMode](./system-prompts/tool-description-exitplanmode.md) (**342** tks) - Description for the ExitPlanMode tool, which presents a plan dialog for the user to approve. - [Tool Description: Glob](./system-prompts/tool-description-glob.md) (**122** tks) - Tool description for file pattern matching and searching by name. - [Tool Description: Grep](./system-prompts/tool-description-grep.md) (**300** tks) - Tool description for content search using ripgrep. -- [Tool Description: LSP](./system-prompts/tool-description-lsp.md) (**172** tks) - Description for the LSP tool. +- [Tool Description: LSP](./system-prompts/tool-description-lsp.md) (**172** tks) - Description for the LSP tool.. - [Tool Description: NotebookEdit](./system-prompts/tool-description-notebookedit.md) (**121** tks) - Tool description for editing Jupyter notebook cells. - [Tool Description: ReadFile](./system-prompts/tool-description-readfile.md) (**439** tks) - Tool description for reading files. - [Tool Description: Skill](./system-prompts/tool-description-skill.md) (**279** tks) - Tool description for executing skills in the main conversation. diff --git a/scripts/updatePrompts.js b/scripts/updatePrompts.js new file mode 100644 index 0000000..001f72d --- /dev/null +++ b/scripts/updatePrompts.js @@ -0,0 +1,470 @@ +#!/usr/bin/env node + +import { readFileSync, writeFileSync, readdirSync, unlinkSync } from 'fs'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const ROOT_DIR = join(__dirname, '..'); +const SYSTEM_PROMPTS_DIR = join(ROOT_DIR, 'system-prompts'); +const README_PATH = join(ROOT_DIR, 'README.md'); + +// Get API key from environment +const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY; +if (!ANTHROPIC_API_KEY) { + console.error('Error: ANTHROPIC_API_KEY environment variable is required'); + console.error('Set it with: export ANTHROPIC_API_KEY=your-api-key'); + process.exit(1); +} + +/** + * Count tokens using Anthropic's token counting API + */ +async function countTokens(text) { + const response = await fetch('https://api.anthropic.com/v1/messages/count_tokens', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'anthropic-version': '2023-06-01', + 'x-api-key': ANTHROPIC_API_KEY + }, + body: JSON.stringify({ + model: 'claude-sonnet-4-20250514', + messages: [ + { + role: 'user', + content: text + } + ] + }) + }); + + if (!response.ok) { + const error = await response.text(); + throw new Error(`Token counting API error: ${response.status} ${error}`); + } + + const data = await response.json(); + return data.input_tokens; +} + +/** + * Batch count tokens for multiple prompts with rate limiting + */ +async function countTokensBatch(prompts, batchSize = 5, delayMs = 100) { + const results = new Map(); + + for (let i = 0; i < prompts.length; i += batchSize) { + const batch = prompts.slice(i, i + batchSize); + const promises = batch.map(async ({ filename, content }) => { + try { + const tokens = await countTokens(content); + return { filename, tokens }; + } catch (err) { + console.error(`Error counting tokens for ${filename}: ${err.message}`); + return { filename, tokens: 0 }; + } + }); + + const batchResults = await Promise.all(promises); + batchResults.forEach(({ filename, tokens }) => { + results.set(filename, tokens); + }); + + // Rate limiting delay between batches + if (i + batchSize < prompts.length) { + await new Promise(resolve => setTimeout(resolve, delayMs)); + } + } + + return results; +} + +/** + * Convert prompt name to filename + * Examples: + * "Agent Prompt: Explore" → "agent-prompt-explore.md" + * "System Prompt: Main system prompt" → "system-prompt-main-system-prompt.md" + * "Tool Description: Bash" → "tool-description-bash.md" + */ +function nameToFilename(name) { + // Determine prefix based on the name prefix + let prefix = ''; + let namePart = name; + + if (name.startsWith('Agent Prompt: ')) { + prefix = 'agent-prompt-'; + namePart = name.substring('Agent Prompt: '.length); + } else if (name.startsWith('System Prompt: ')) { + prefix = 'system-prompt-'; + namePart = name.substring('System Prompt: '.length); + } else if (name.startsWith('System Reminder: ')) { + prefix = 'system-reminder-'; + namePart = name.substring('System Reminder: '.length); + } else if (name.startsWith('Tool Description: ')) { + prefix = 'tool-description-'; + namePart = name.substring('Tool Description: '.length); + } else if (name.startsWith('Data: ')) { + prefix = 'data-'; + namePart = name.substring('Data: '.length); + } + + // Convert to lowercase and replace special chars + const filename = namePart + .toLowerCase() + .replace(/\./g, '') // Remove dots + .replace(/\s+/g, '-') // Spaces to hyphens + .replace(/[()]/g, '') // Remove parentheses + .replace(/\//g, '-') // Slashes to hyphens + .replace(/-+/g, '-') // Collapse multiple hyphens + .replace(/^-|-$/g, ''); // Trim hyphens from start/end + + return prefix + filename + '.md'; +} + +/** + * Reconstruct the full prompt content from pieces and identifiers + */ +function reconstructPrompt(prompt) { + if (prompt.pieces.length === 0) return ''; + if (prompt.pieces.length === 1) return prompt.pieces[0]; + + let result = ''; + let identifierIndex = 0; + + for (let i = 0; i < prompt.pieces.length; i++) { + result += prompt.pieces[i]; + + // Add variable name (pieces already contain ${ and } delimiters) + if (i < prompt.pieces.length - 1 && identifierIndex < prompt.identifiers.length) { + const identifierId = prompt.identifiers[identifierIndex].toString(); + const variableName = prompt.identifierMap[identifierId]; + if (variableName) { + result += variableName; + } + identifierIndex++; + } + } + + return result; +} + +/** + * Create markdown file content with HTML comment metadata + */ +function createMarkdownContent(prompt, reconstructedContent) { + const variables = Object.values(prompt.identifierMap || {}); + + let content = '\n'; + content += reconstructedContent; + + // Ensure file ends with newline + if (!content.endsWith('\n')) { + content += '\n'; + } + + return content; +} + +/** + * Parse existing markdown file to extract metadata + */ +function parseMarkdownFile(filepath) { + try { + const content = readFileSync(filepath, 'utf-8'); + const commentMatch = content.match(//); + if (!commentMatch) return null; + + const metadataSection = commentMatch[1]; + const nameMatch = metadataSection.match(/name: '(.+)'/); + const descMatch = metadataSection.match(/description: (.+?)(?=\nccVersion:)/s); + + return { + name: nameMatch ? nameMatch[1] : null, + description: descMatch ? descMatch[1].replace(/>\n\s+/g, '').trim() : null, + fullContent: content + }; + } catch (err) { + return null; + } +} + +/** + * Categorize prompts based on their name + */ +function categorizePrompt(name) { + if (name.startsWith('Agent Prompt: ')) { + const namePart = name.substring('Agent Prompt: '.length); + // Sub-categorize agent prompts + if (['Explore', 'Plan mode (enhanced)', 'Task tool'].some(sub => namePart.startsWith(sub))) { + return { category: 'Agent Prompts', subcategory: 'Sub-agents' }; + } else if (['Agent creation architect', 'CLAUDE.md creation', 'Status line setup'].some(sub => namePart.includes(sub))) { + return { category: 'Agent Prompts', subcategory: 'Creation Assistants' }; + } else if (namePart.includes('slash command') || namePart.startsWith('/')) { + return { category: 'Agent Prompts', subcategory: 'Slash commands' }; + } else { + return { category: 'Agent Prompts', subcategory: 'Utilities' }; + } + } else if (name.startsWith('System Prompt: ')) { + return { category: 'System Prompt', subcategory: null }; + } else if (name.startsWith('System Reminder: ')) { + return { category: 'System Reminders', subcategory: null }; + } else if (name.startsWith('Tool Description: ')) { + // Check for "additional notes" subcategory + if (name.includes('(') && name.includes(')')) { + return { category: 'Builtin Tool Descriptions', subcategory: 'Additional notes for some Tool Descriptions' }; + } + return { category: 'Builtin Tool Descriptions', subcategory: null }; + } else if (name.startsWith('Data: ')) { + return { category: 'Data', subcategory: null }; + } + + return { category: 'Other', subcategory: null }; +} + +/** + * Update or create README entry for a prompt + */ +function createReadmeEntry(prompt, filename, tokens, isBold = false) { + const link = isBold ? `[**${prompt.name}**]` : `[${prompt.name}]`; + const path = `./system-prompts/${filename}`; + const tokenCount = `(**${tokens}** tks)`; + const description = prompt.description.replace(/\n\s+/g, ' ').trim(); + + return `- ${link}(${path}) ${tokenCount} - ${description}.`; +} + +/** + * Main update function + */ +async function updateFromJSON(jsonPath) { + console.log(`Reading JSON from: ${jsonPath}`); + const jsonData = JSON.parse(readFileSync(jsonPath, 'utf-8')); + + console.log(`Version: ${jsonData.version}`); + console.log(`Prompts count: ${jsonData.prompts.length}`); + + // Track all prompts by filename + const promptsByFilename = new Map(); + const changedPrompts = new Set(); + const newPrompts = new Set(); + const promptsToCount = []; + + // First pass: Process files and identify what needs token counting + for (const prompt of jsonData.prompts) { + const filename = nameToFilename(prompt.name); + const filepath = join(SYSTEM_PROMPTS_DIR, filename); + const reconstructedContent = reconstructPrompt(prompt); + const newMarkdownContent = createMarkdownContent(prompt, reconstructedContent); + + // Check if file exists and compare + const existingFile = parseMarkdownFile(filepath); + + if (existingFile) { + // Compare content + if (existingFile.fullContent.trim() !== newMarkdownContent.trim()) { + console.log(`⚠️ Changed: ${filename}`); + unlinkSync(filepath); // Delete old file + writeFileSync(filepath, newMarkdownContent); + changedPrompts.add(filename); + } + } else { + console.log(`✨ New: ${filename}`); + writeFileSync(filepath, newMarkdownContent); + newPrompts.add(filename); + } + + // Store for token counting + promptsToCount.push({ filename, content: reconstructedContent, prompt }); + } + + // Batch count tokens for all prompts + console.log('\n🔢 Counting tokens...'); + const tokenCounts = await countTokensBatch(promptsToCount); + + // Store prompt info for README updates + for (const { filename, prompt } of promptsToCount) { + const tokens = tokenCounts.get(filename) || 0; + promptsByFilename.set(filename, { prompt, tokens }); + } + + // Find deleted prompts + const allMdFiles = readdirSync(SYSTEM_PROMPTS_DIR).filter(f => f.endsWith('.md')); + const deletedFiles = allMdFiles.filter(f => !promptsByFilename.has(f)); + + if (deletedFiles.length > 0) { + console.log('\n🗑️ Deleting removed prompts:'); + deletedFiles.forEach(f => { + console.log(` - ${f}`); + unlinkSync(join(SYSTEM_PROMPTS_DIR, f)); + }); + } + + // Update README + console.log('\n📝 Updating README.md...'); + updateReadme(promptsByFilename, jsonData.version); + + console.log('\n✅ Update complete!'); + console.log(` New: ${newPrompts.size}`); + console.log(` Changed: ${changedPrompts.size}`); + console.log(` Deleted: ${deletedFiles.length}`); +} + +/** + * Update README.md with new prompt information + */ +function updateReadme(promptsByFilename, version) { + let readme = readFileSync(README_PATH, 'utf-8'); + const lines = readme.split('\n'); + + // Update version in header + lines[2] = `This repository contains an up-to-date list of all Claude Code's various system prompts and their associated token counts as of ${version}.`; + + // Organize prompts by category + const categories = { + 'Agent Prompts': { + 'Sub-agents': [], + 'Creation Assistants': [], + 'Slash commands': [], + 'Utilities': [] + }, + 'System Prompt': { 'main': [] }, + 'System Reminders': { 'main': [] }, + 'Builtin Tool Descriptions': { + 'main': [], + 'Additional notes for some Tool Descriptions': [] + }, + 'Data': { 'main': [] } + }; + + // Categorize all prompts + for (const [filename, { prompt, tokens }] of promptsByFilename) { + const { category, subcategory } = categorizePrompt(prompt.name); + + // Special handling for bold main system prompt + const isBold = prompt.name === 'System Prompt: Main system prompt'; + const entry = createReadmeEntry(prompt, filename, tokens, isBold); + + if (category === 'Agent Prompts') { + categories['Agent Prompts'][subcategory].push(entry); + } else if (category === 'System Prompt') { + categories['System Prompt']['main'].push(entry); + } else if (category === 'System Reminders') { + categories['System Reminders']['main'].push(entry); + } else if (category === 'Builtin Tool Descriptions') { + const subcat = subcategory || 'main'; + categories['Builtin Tool Descriptions'][subcat].push(entry); + } else if (category === 'Data') { + categories['Data']['main'].push(entry); + } + } + + // Sort entries alphabetically within each category + for (const category of Object.values(categories)) { + for (const subcategory of Object.values(category)) { + if (Array.isArray(subcategory)) { + subcategory.sort(); + } + } + } + + // Rebuild README sections + const newLines = []; + let i = 0; + + // Copy everything up to "### Agent Prompts" + while (i < lines.length && !lines[i].startsWith('### Agent Prompts')) { + newLines.push(lines[i]); + i++; + } + + // Agent Prompts section + newLines.push('### Agent Prompts'); + newLines.push(''); + newLines.push('Sub-agents and utilities.'); + newLines.push(''); + newLines.push('#### Sub-agents'); + newLines.push(''); + newLines.push(...categories['Agent Prompts']['Sub-agents']); + newLines.push(''); + newLines.push('### Creation Assistants'); + newLines.push(''); + newLines.push(...categories['Agent Prompts']['Creation Assistants']); + newLines.push(''); + newLines.push('### Slash commands'); + newLines.push(''); + newLines.push(...categories['Agent Prompts']['Slash commands']); + newLines.push(''); + newLines.push('### Utilities'); + newLines.push(''); + newLines.push(...categories['Agent Prompts']['Utilities']); + newLines.push(''); + + // Data section (commented out if has entries) + if (categories['Data']['main'].length > 0) { + newLines.push(''); + newLines.push(''); + } + + // System Prompt section + newLines.push('### System Prompt'); + newLines.push(''); + newLines.push('Parts of the main system prompt.'); + newLines.push(''); + newLines.push(...categories['System Prompt']['main']); + newLines.push(''); + + // System Reminders section + newLines.push('### System Reminders'); + newLines.push(''); + newLines.push('Text for large system reminders.'); + newLines.push(''); + newLines.push('> [!NOTE]'); + newLines.push('> Note that we\'re planning to add a **system reminder creator/editor** to [tweakcc](https://github.com/Piebald-AI/tweakcc); :+1: [this issue](https://github.com/Piebald-AI/tweakcc/issues/113) if you\'re interested in that idea.'); + newLines.push(''); + newLines.push(...categories['System Reminders']['main']); + newLines.push(''); + + // Builtin Tool Descriptions section + newLines.push('### Builtin Tool Descriptions'); + newLines.push(''); + newLines.push(...categories['Builtin Tool Descriptions']['main']); + newLines.push(''); + newLines.push('**Additional notes for some Tool Desscriptions**'); + newLines.push(''); + newLines.push(...categories['Builtin Tool Descriptions']['Additional notes for some Tool Descriptions']); + newLines.push(''); + + // Write updated README + writeFileSync(README_PATH, newLines.join('\n')); +} + +// Main execution +const args = process.argv.slice(2); +if (args.length === 0) { + console.error('Usage: node updatePrompts.js '); + console.error('Example: node updatePrompts.js /path/to/tweakcc/data/prompts/prompts-2.0.44.json'); + process.exit(1); +} + +const jsonPath = args[0]; +await updateFromJSON(jsonPath); diff --git a/system-prompts/agent-prompt-claudemd-creation.md b/system-prompts/agent-prompt-claudemd-creation.md index 39a4dd4..47c26e4 100644 --- a/system-prompts/agent-prompt-claudemd-creation.md +++ b/system-prompts/agent-prompt-claudemd-creation.md @@ -1,8 +1,6 @@ Please analyze this codebase and create a CLAUDE.md file, which will be given to future instances of Claude Code to operate in this repository. diff --git a/system-prompts/agent-prompt-prompt-hook-execution.md b/system-prompts/agent-prompt-prompt-hook-execution.md index 700f00d..e6d6692 100644 --- a/system-prompts/agent-prompt-prompt-hook-execution.md +++ b/system-prompts/agent-prompt-prompt-hook-execution.md @@ -1,8 +1,6 @@ You are evaluating a hook in Claude Code. diff --git a/system-prompts/agent-prompt-security-review-slash.md b/system-prompts/agent-prompt-security-review-slash.md index bad6089..330cc02 100644 --- a/system-prompts/agent-prompt-security-review-slash.md +++ b/system-prompts/agent-prompt-security-review-slash.md @@ -1,8 +1,6 @@ --- diff --git a/system-prompts/agent-prompt-status-line-setup.md b/system-prompts/agent-prompt-status-line-setup.md index ded9e81..0dbd3ec 100644 --- a/system-prompts/agent-prompt-status-line-setup.md +++ b/system-prompts/agent-prompt-status-line-setup.md @@ -1,8 +1,6 @@ You are a status line setup agent for Claude Code. Your job is to create or update the statusLine command in the user's Claude Code settings. diff --git a/system-prompts/agent-prompt-webfetch-summarizer.md b/system-prompts/agent-prompt-webfetch-summarizer.md index 60191fc..9bd42b1 100644 --- a/system-prompts/agent-prompt-webfetch-summarizer.md +++ b/system-prompts/agent-prompt-webfetch-summarizer.md @@ -1,8 +1,6 @@ name: Claude Code diff --git a/system-prompts/data-github-actions-workflow-for-automated-code-review-beta.md b/system-prompts/data-github-actions-workflow-for-automated-code-review-beta.md index 20116c3..9778f02 100644 --- a/system-prompts/data-github-actions-workflow-for-automated-code-review-beta.md +++ b/system-prompts/data-github-actions-workflow-for-automated-code-review-beta.md @@ -1,8 +1,6 @@ name: Claude Code Review diff --git a/system-prompts/system-prompt-learning-mode.md b/system-prompts/system-prompt-learning-mode.md index fb84829..4bc0aa1 100644 --- a/system-prompts/system-prompt-learning-mode.md +++ b/system-prompts/system-prompt-learning-mode.md @@ -1,8 +1,6 @@ Launch a new agent to handle complex, multi-step tasks autonomously.