6 6
7> Prompts para copiar y pegar en Claude Code, etiquetados por tarea y rol.7> Prompts para copiar y pegar en Claude Code, etiquetados por tarea y rol.
8 8
9export const PromptLibrary = ({text = {}, labels = {}, tagLabels = {}, phaseLabels = {}, sourceLabels = {}, catLabels = {}}) => {
10 const RAW = useMemo(() => [{
11 id: 'get-oriented-in-a',
12 sdlc: 'discover',
13 cat: 'Onboard',
14 startN: 1,
15 roles: [],
16 prompt: 'give me an overview of this codebase: architecture, key directories, and how the pieces connect',
17 nextHref: '/en/memory',
18 src: 'workflows'
19 }, {
20 id: 'explain-unfamiliar-code',
21 sdlc: 'discover',
22 cat: 'Understand',
23 roles: [],
24 prompt: 'explain what {path} does and how data flows through it. write it up as {format}',
25 slots: {
26 path: 'src/scheduler/queue.ts',
27 format: 'an HTML page with a diagram, then open it in my browser'
28 },
29 nextHref: '/en/output-styles',
30 src: 'workflows'
31 }, {
32 id: 'find-where-something-happens',
33 sdlc: 'discover',
34 cat: 'Understand',
35 startN: 2,
36 roles: [],
37 prompt: 'where do we {behavior}?',
38 slots: {
39 behavior: 'validate uploaded file types'
40 },
41 src: 'workflows'
42 }, {
43 id: 'see-what-depends-on',
44 sdlc: 'discover',
45 cat: 'Understand',
46 roles: [],
47 prompt: 'what would break if I deleted {target}?',
48 slots: {
49 target: 'the retryWithBackoff helper'
50 },
51 src: 'workflows'
52 }, {
53 id: 'trace-how-code-evolved',
54 sdlc: 'discover',
55 cat: 'Understand',
56 roles: [],
57 prompt: 'look through the commit history of {path} and summarize how it evolved and why',
58 slots: {
59 path: 'internal/auth/session.go'
60 },
61 src: 'best-practices'
62 }, {
63 id: 'scope-a-change-before',
64 sdlc: 'discover',
65 cat: 'Understand',
66 roles: ['pm', 'design'],
67 prompt: 'which files would I need to touch to {change}?',
68 slots: {
69 change: 'add a dark mode toggle to settings'
70 },
71 src: 'teams'
72 }, {
73 id: 'ask-the-codebase-a',
74 sdlc: 'discover',
75 cat: 'Understand',
76 roles: ['pm'],
77 prompt: 'I am a {role}. walk me through what happens when a user {action}, from the UI down to the result',
78 slots: {
79 role: 'PM',
80 action: 'clicks Export to PDF'
81 },
82 nextHref: '/en/output-styles',
83 src: 'teams'
84 }, {
85 id: 'plan-a-multi-file',
86 sdlc: 'design',
87 cat: 'Plan',
88 roles: ['pm', 'design'],
89 prompt: 'plan how to refactor the {target} to {goal}. list the files you would change, but don\'t edit anything yet',
90 slots: {
91 target: 'payment module',
92 goal: 'support multiple currencies'
93 },
94 src: 'workflows'
95 }, {
96 id: 'draft-a-spec-by',
97 sdlc: 'design',
98 cat: 'Plan',
99 roles: ['pm'],
100 prompt: 'I want to build {feature}. interview me about implementation, UX, edge cases, and tradeoffs until we have covered everything, then write the spec to SPEC.md',
101 slots: {
102 feature: 'per-workspace rate limits'
103 },
104 nextHref: '/en/skills',
105 src: 'best-practices'
106 }, {
107 id: 'turn-a-meeting-into',
108 sdlc: 'design',
109 cat: 'Plan',
110 roles: ['pm'],
111 prompt: 'read {input} and write up the action items, then create a ticket in {tracker} for each one, with acceptance criteria',
112 slots: {
113 input: '@meeting-notes.md',
114 tracker: 'our issue tracker'
115 },
116 needs: 'tracker',
117 nextHref: '/en/skills',
118 src: 'teams'
119 }, {
120 id: 'map-edge-cases-before',
121 sdlc: 'design',
122 cat: 'Plan',
123 roles: ['design', 'pm'],
124 prompt: 'list the error states, empty states, and edge cases for {feature} that the design needs to cover',
125 slots: {
126 feature: 'the file upload flow'
127 },
128 src: 'teams'
129 }, {
130 id: 'turn-a-mockup-into',
131 sdlc: 'design',
132 cat: 'Prototype',
133 roles: ['design', 'pm', 'marketing'],
134 paste: 'mockup',
135 prompt: 'here is a mockup. build a working prototype I can click through, matching the layout and states shown',
136 src: 'teams'
137 }, {
138 id: 'implement-from-a-screenshot',
139 sdlc: 'design',
140 cat: 'Prototype',
141 roles: ['design'],
142 paste: 'design',
143 needs: 'browser',
144 prompt: 'implement this design, then take a screenshot of the result, compare it to the original, and fix any differences',
145 nextHref: '/en/goal',
146 src: 'best-practices'
147 }, {
148 id: 'follow-an-existing-pattern',
149 sdlc: 'build',
150 cat: 'Implement',
151 roles: [],
152 prompt: 'look at how {example} is implemented to understand the pattern, then build {new} the same way',
153 slots: {
154 example: 'the existing webhook handler',
155 new: 'a payments webhook handler'
156 },
157 nextHref: '/en/memory',
158 src: 'best-practices'
159 }, {
160 id: 'generate-docs-for-code',
161 sdlc: 'build',
162 cat: 'Implement',
163 roles: ['docs'],
164 prompt: 'find {scope} without {format} comments and add them, matching the style already used in the file',
165 slots: {
166 scope: 'the public functions in src/auth/',
167 format: 'JSDoc'
168 },
169 src: 'workflows'
170 }, {
171 id: 'add-a-small-well',
172 sdlc: 'build',
173 cat: 'Implement',
174 roles: [],
175 prompt: 'add a {endpoint} endpoint that returns {payload}',
176 slots: {
177 endpoint: '/health',
178 payload: 'the app version and uptime'
179 },
180 src: 'workflows'
181 }, {
182 id: 'build-a-small-internal',
183 sdlc: 'build',
184 cat: 'Implement',
185 roles: ['pm', 'design', 'marketing', 'docs'],
186 prompt: 'create a {tool} using HTML, CSS, and vanilla JavaScript, then open it in my browser',
187 slots: {
188 tool: 'drag-and-drop Kanban board with three columns'
189 },
190 src: 'teams'
191 }, {
192 id: 'work-an-issue-end',
193 sdlc: 'build',
194 cat: 'Implement',
195 roles: [],
196 prompt: 'read issue #{issue}, implement the fix, and run the tests',
197 slots: {
198 issue: '312'
199 },
200 needs: 'gh',
201 src: 'workflows'
202 }, {
203 id: 'find-and-update-copy',
204 sdlc: 'build',
205 cat: 'Implement',
206 roles: ['design', 'docs', 'marketing'],
207 prompt: 'find every place we say "{copy}" or a close variant, show me each one in context, then update them all to "{new}". leave tests and the changelog alone',
208 slots: {
209 copy: 'Sign up free',
210 new: 'Start free trial'
211 },
212 src: 'teams'
213 }, {
214 id: 'draft-from-past-examples',
215 sdlc: 'build',
216 cat: 'Implement',
217 roles: ['docs', 'marketing', 'pm'],
218 prompt: 'read the {examples} in {folder} to learn the structure and voice, then draft a new one for {topic}',
219 slots: {
220 examples: 'privacy impact assessments',
221 folder: 'legal/pia/',
222 topic: 'the new analytics integration'
223 },
224 nextHref: '/en/skills',
225 src: 'legal'
226 }, {
227 id: 'write-tests-run-them',
228 sdlc: 'build',
229 cat: 'Test',
230 startN: 4,
231 roles: [],
232 prompt: 'write tests for {path}, run them, and fix any failures',
233 slots: {
234 path: 'app/parsers/feed.py'
235 },
236 nextHref: '/en/memory',
237 src: 'workflows'
238 }, {
239 id: 'drive-implementation-from-tests',
240 sdlc: 'build',
241 cat: 'Test',
242 roles: [],
243 prompt: 'write tests for {feature} first, then implement it until they pass',
244 slots: {
245 feature: 'the password reset flow'
246 },
247 src: 'ebook'
248 }, {
249 id: 'fill-gaps-from-a',
250 sdlc: 'build',
251 cat: 'Test',
252 roles: [],
253 prompt: 'read {report} and add tests for the lowest-covered files until each is above {target}%',
254 slots: {
255 report: 'coverage/coverage-summary.json',
256 target: '80'
257 },
258 nextHref: '/en/goal',
259 src: 'workflows'
260 }, {
261 id: 'migrate-a-pattern-across',
262 sdlc: 'build',
263 cat: 'Refactor',
264 roles: [],
265 prompt: 'migrate everything from {from} to {to}: identify every place that needs to change, then make the changes',
266 slots: {
267 from: 'the old logging API',
268 to: 'the structured logger'
269 },
270 src: 'workflows'
271 }, {
272 id: 'port-code-between-languages',
273 sdlc: 'build',
274 cat: 'Refactor',
275 roles: [],
276 prompt: 'port {source} to {target}, keeping the same {keep}',
277 slots: {
278 source: 'this Python module',
279 target: 'Rust',
280 keep: 'public API and test behavior'
281 },
282 src: 'teams'
283 }, {
284 id: 'optimize-against-a-measurable',
285 sdlc: 'build',
286 cat: 'Refactor',
287 roles: ['data'],
288 prompt: 'optimize {target} to bring {metric} from {current} down to under {goal}',
289 slots: {
290 target: 'the search query',
291 metric: 'p95 latency',
292 current: '2s',
293 goal: '500ms'
294 },
295 nextHref: '/en/goal',
296 src: 'ebook'
297 }, {
298 id: 'fix-a-precise-visual',
299 sdlc: 'build',
300 cat: 'Refactor',
301 roles: ['design'],
302 prompt: 'the {element} extends {amount} beyond the {container} on {viewport}. fix it.',
303 slots: {
304 element: 'login button',
305 amount: '20px',
306 container: 'card border',
307 viewport: 'mobile'
308 },
309 nextHref: '/en/desktop#preview-your-app',
310 src: 'ebook'
311 }, {
312 id: 'review-your-changes-before',
313 sdlc: 'build',
314 cat: 'Review',
315 startN: 5,
316 roles: [],
317 prompt: 'review my uncommitted changes and flag anything that looks risky before I commit',
318 nextHref: '/en/commands',
319 src: 'workflows'
320 }, {
321 id: 'review-a-pull-request',
322 sdlc: 'build',
323 cat: 'Review',
324 roles: [],
325 prompt: 'review PR #{pr} and summarize what changed, then list any concerns',
326 slots: {
327 pr: '247'
328 },
329 needs: 'gh',
330 nextHref: '/en/code-review',
331 src: 'workflows'
332 }, {
333 id: 'review-infrastructure-changes-before',
334 sdlc: 'build',
335 cat: 'Review',
336 roles: ['security', 'ops'],
337 paste: 'plan',
338 prompt: 'here is my Terraform plan output. what is this going to do, and is anything here going to cause problems?',
339 src: 'teams'
340 }, {
341 id: 'run-a-security-review',
342 sdlc: 'build',
343 cat: 'Review',
344 roles: ['security'],
345 prompt: 'use a subagent to review {path} for security issues and report what it finds',
346 slots: {
347 path: 'src/api/'
348 },
349 nextHref: '/en/sub-agents',
350 src: 'best-practices'
351 }, {
352 id: 'review-content-before-sending',
353 sdlc: 'build',
354 cat: 'Review',
355 roles: ['marketing', 'docs'],
356 prompt: 'review {file} for {concerns} and list anything I should fix before it goes to {reviewer}',
357 slots: {
358 file: 'launch-post.md',
359 concerns: 'unsupported claims, missing attributions, and brand-guideline issues',
360 reviewer: 'legal'
361 },
362 nextHref: '/en/skills',
363 src: 'legal'
364 }, {
365 id: 'course-correct-a-wrong',
366 sdlc: 'build',
367 cat: 'Steer',
368 roles: [],
369 prompt: 'that is not right: {feedback}. try a different approach',
370 slots: {
371 feedback: 'the function signature needs to stay backward-compatible'
372 },
373 nextHref: '/en/checkpointing',
374 src: 'best-practices'
375 }, {
376 id: 'narrow-the-scope-of',
377 sdlc: 'build',
378 cat: 'Steer',
379 roles: [],
380 prompt: 'that is too much. keep only the changes to {scope} and undo your other edits',
381 slots: {
382 scope: 'the validation logic in src/forms/'
383 },
384 src: 'best-practices'
385 }, {
386 id: 'turn-a-correction-into',
387 sdlc: 'build',
388 cat: 'Steer',
389 roles: [],
390 prompt: 'you keep {mistake}. add a rule to CLAUDE.md so this stops happening',
391 slots: {
392 mistake: 'using default exports when this project uses named exports'
393 },
394 nextHref: '/en/memory',
395 src: 'best-practices'
396 }, {
397 id: 'resolve-merge-conflicts',
398 sdlc: 'ship',
399 cat: 'Git',
400 roles: [],
401 prompt: 'resolve the merge conflicts in this branch and explain what you kept from each side',
402 src: 'workflows'
403 }, {
404 id: 'commit-with-a-generated',
405 sdlc: 'ship',
406 cat: 'Git',
407 roles: [],
408 prompt: 'commit these changes with a message that summarizes what I did',
409 src: 'workflows'
410 }, {
411 id: 'open-a-pull-request',
412 sdlc: 'ship',
413 cat: 'Git',
414 roles: [],
415 prompt: 'find the ticket about {topic} in {tracker} and open a PR that implements it',
416 slots: {
417 tracker: 'our issue tracker',
418 topic: 'the login timeout'
419 },
420 needs: 'tracker',
421 src: 'workflows'
422 }, {
423 id: 'draft-release-notes-from',
424 sdlc: 'ship',
425 cat: 'Release',
426 roles: ['pm', 'docs', 'marketing'],
427 prompt: 'compare {from} to {to} and draft release notes grouped by feature, fix, and breaking change',
428 slots: {
429 from: 'v2.3.0',
430 to: 'v2.4.0'
431 },
432 nextHref: '/en/skills',
433 src: 'workflows'
434 }, {
435 id: 'write-a-ci-workflow',
436 sdlc: 'ship',
437 cat: 'Release',
438 roles: ['ops'],
439 prompt: 'write a GitHub Actions workflow that {steps} on every push to {branch}',
440 slots: {
441 steps: 'runs the tests and deploys to staging',
442 branch: 'main'
443 },
444 src: 'workflows'
445 }, {
446 id: 'find-and-fix-a',
447 sdlc: 'operate',
448 cat: 'Debug',
449 startN: 3,
450 roles: [],
451 prompt: 'the {test} test is failing, find out why and fix it',
452 slots: {
453 test: 'UserAuth'
454 },
455 src: 'workflows'
456 }, {
457 id: 'investigate-a-reported-error',
458 sdlc: 'operate',
459 cat: 'Debug',
460 roles: ['ops'],
461 prompt: 'users are seeing {symptom} on {where}. investigate and tell me what is going on',
462 slots: {
463 symptom: '500 errors',
464 where: '/api/settings'
465 },
466 nextHref: '/en/web-quickstart#pre-fill-sessions',
467 src: 'workflows'
468 }, {
469 id: 'fix-a-build-error',
470 sdlc: 'operate',
471 cat: 'Debug',
472 roles: ['ops'],
473 paste: 'error',
474 prompt: 'here is a build error. fix the root cause and verify the build succeeds',
475 src: 'best-practices'
476 }, {
477 id: 'investigate-a-production-incident',
478 sdlc: 'operate',
479 cat: 'Incident',
480 roles: ['ops', 'security'],
481 prompt: '{symptom}. check the logs, recent deploys, and config changes, then tell me the most likely cause',
482 slots: {
483 symptom: 'the checkout endpoint started returning 500s an hour ago'
484 },
485 nextHref: '/en/mcp',
486 src: 'workflows'
487 }, {
488 id: 'diagnose-from-a-console',
489 sdlc: 'operate',
490 cat: 'Incident',
491 roles: ['ops', 'data'],
492 paste: 'screenshot',
493 prompt: 'here is a screenshot of {console}. walk me through why {resource} is failing and give me the exact commands to fix it',
494 slots: {
495 console: 'our Kubernetes dashboard',
496 resource: 'this pod'
497 },
498 src: 'teams'
499 }, {
500 id: 'query-logs-in-plain',
501 sdlc: 'operate',
502 cat: 'Incident',
503 roles: ['security', 'ops', 'data'],
504 prompt: 'show me all {events} for {scope} over {timeframe}. write the query, run it, and tell me what stands out',
505 slots: {
506 events: 'failed logins',
507 scope: 'the auth service',
508 timeframe: 'the past 24 hours'
509 },
510 needs: 'db',
511 src: 'cybersecurity'
512 }, {
513 id: 'analyze-a-data-file',
514 sdlc: 'operate',
515 cat: 'Data',
516 roles: ['data', 'pm', 'marketing'],
517 paste: 'csv',
518 prompt: 'read {file}, summarize the key patterns, and write the results to {output}',
519 slots: {
520 file: '@reports/q1-signups.csv',
521 output: 'an HTML page with charts, then open it in my browser'
522 },
523 nextHref: '/en/mcp',
524 src: 'teams'
525 }, {
526 id: 'generate-variations-from-performance',
527 sdlc: 'operate',
528 cat: 'Data',
529 roles: ['marketing', 'data'],
530 paste: 'csv',
531 prompt: 'read {file}, find the underperforming {items}, and generate {n} new variations that stay under {limit} characters',
532 slots: {
533 file: '@ads-performance.csv',
534 items: 'headlines',
535 n: '20',
536 limit: '90'
537 },
538 nextHref: '/en/mcp',
539 src: 'teams'
540 }, {
541 id: 'turn-a-recurring-task',
542 sdlc: 'operate',
543 cat: 'Automate',
544 roles: [],
545 prompt: 'create a /{name} skill for this project that {steps}',
546 slots: {
547 name: 'ship',
548 steps: 'runs the linter and tests, then drafts a commit message'
549 },
550 src: 'workflows'
551 }, {
552 id: 'add-a-hook-for',
553 sdlc: 'operate',
554 cat: 'Automate',
555 roles: [],
556 prompt: 'write a hook that {action} after every {event}',
557 slots: {
558 action: 'runs prettier',
559 event: 'edit to a .ts or .tsx file'
560 },
561 src: 'best-practices'
562 }, {
563 id: 'connect-a-tool-with',
564 sdlc: 'operate',
565 cat: 'Automate',
566 roles: [],
567 prompt: 'connect {server} via MCP so you can read its {data} directly',
568 slots: {
569 server: 'our error tracker',
570 data: 'stack traces'
571 },
572 src: 'workflows'
573 }, {
574 id: 'capture-what-to-remember',
575 sdlc: 'operate',
576 cat: 'Automate',
577 roles: ['pm', 'docs'],
578 prompt: 'summarize what we did this session and suggest what to add to CLAUDE.md',
579 src: 'teams'
580 }], []);
581 const PROMPTS = useMemo(() => {
582 if (typeof window !== 'undefined') {
583 const rawIds = new Set(RAW.map(p => p.id));
584 RAW.forEach(p => {
585 if (!text[p.id]) console.warn('[prompt-library] no text[] entry for id:', p.id);
586 });
587 Object.keys(text).forEach(k => {
588 if (!rawIds.has(k)) console.warn('[prompt-library] orphaned text[] key:', k);
589 });
590 }
591 return RAW.map(p => ({
592 ...p,
593 title: p.id,
594 teaches: '',
595 ...text[p.id] || ({})
596 }));
597 }, [RAW, text]);
598 const L = labels;
599 const TL = k => tagLabels[k] || k;
600 const CAT_TAG = useMemo(() => ({
601 Onboard: 'understand',
602 Understand: 'understand',
603 Plan: 'plan',
604 Prototype: 'prototype',
605 Implement: 'build',
606 Test: 'test',
607 Refactor: 'refactor',
608 Review: 'review',
609 Steer: 'steer',
610 Git: 'git',
611 Release: 'release',
612 Debug: 'debug',
613 Incident: 'debug',
614 Data: 'data',
615 Automate: 'automate'
616 }), []);
617 const TAGS = useMemo(() => ['understand', 'plan', 'prototype', 'build', 'test', 'refactor', 'review', 'steer', 'debug', 'git', 'release', 'data', 'automate', 'pm', 'design', 'docs', 'marketing', 'security', 'ops'], []);
618 const tagsOf = p => [CAT_TAG[p.cat], ...p.roles || []];
619 const doc = useMemo(() => {
620 const p = typeof window !== 'undefined' ? window.location.pathname : '';
621 const base = p.startsWith('/docs/') ? '/docs' : '';
622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);
623 const locale = m ? m[1] : 'en';
624 return href => {
625 if (!href) return undefined;
626 if (href[0] === '#' || href.startsWith('https://')) return href;
627 if (!(/^\/[A-Za-z0-9]/).test(href)) return undefined;
628 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);
629 };
630 }, []);
631 const SAFE_HREF = /^(\/(?![\/\\\s])|#|https?:\/\/)/;
632 const linkify = s => {
633 const out = [];
634 let last = 0;
635 const re = /\[([^\]]+)\]\(([^)]+)\)/g;
636 for (let m; m = re.exec(s); ) {
637 if (m.index > last) out.push(s.slice(last, m.index));
638 out.push(SAFE_HREF.test(m[2]) ? <a key={m.index} href={doc(m[2])}>{m[1]}</a> : m[1]);
639 last = re.lastIndex;
640 }
641 if (last < s.length) out.push(s.slice(last));
642 return out;
643 };
644 const codeify = s => s.split(/(`[^`]+`)/g).map((part, i) => part[0] === '`' ? <code key={i}>{part.slice(1, -1)}</code> : part);
645 const SOURCES = useMemo(() => ({
646 'workflows': '/en/common-workflows',
647 'teams': 'https://claude.com/blog/how-anthropic-teams-use-claude-code',
648 'legal': 'https://claude.com/blog/how-anthropic-uses-claude-legal',
649 'cybersecurity': 'https://claude.com/blog/how-anthropic-uses-claude-cybersecurity',
650 'best-practices': '/en/best-practices',
651 'ebook': 'https://resources.anthropic.com/hubfs/Scaling%20agentic%20coding%20across%20your%20organization.pdf'
652 }), []);
653 const [mounted, setMounted] = useState(false);
654 const [q, setQ] = useState('');
655 const [start, setStart] = useState(true);
656 const [sel, setSel] = useState(null);
657 const [openId, setOpenId] = useState(null);
658 const [copied, setCopied] = useState(null);
659 const [fills, setFills] = useState({});
660 const copyTimer = useRef(null);
661 useEffect(() => {
662 setMounted(true);
663 return () => clearTimeout(copyTimer.current);
664 }, []);
665 const setFill = (id, key, val) => setFills(f => ({
666 ...f,
667 [id + '.' + key]: val
668 }));
669 const fillOf = (p, key) => {
670 const v = fills[p.id + '.' + key];
671 return v !== undefined ? v : p.slots && p.slots[key] !== undefined ? p.slots[key] : '';
672 };
673 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);
674 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);
675 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');
676 const WIDE_RE = /[\u1100-\u115F\u2E80-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/g;
677 const widthFor = s => {
678 const t = typeof s === 'string' ? s : '';
679 return t.length + (t.match(WIDE_RE) || []).length + 3 + 'ch';
680 };
681 const ql = q.trim().toLowerCase();
682 const toggleTag = k => {
683 setStart(false);
684 setSel(s => !ql && s === k ? null : k);
685 };
686 const clear = () => {
687 setStart(false);
688 setSel(null);
689 setQ('');
690 };
691 const results = useMemo(() => {
692 const list = PROMPTS.filter(p => {
693 if (ql) return p.title.toLowerCase().includes(ql) || bodyText(p).toLowerCase().includes(ql);
694 if (start) return !!p.startN;
695 if (sel) return tagsOf(p).includes(sel);
696 return true;
697 });
698 if (ql) return list;
699 if (start) return list.sort((a, b) => a.startN - b.startN);
700 if (sel) return list.sort((a, b) => (a.roles || []).length - (b.roles || []).length || (b.sdlc === 'operate') - (a.sdlc === 'operate'));
701 return list;
702 }, [PROMPTS, ql, start, sel]);
703 const matchSnippet = p => {
704 if (!ql || p.title.toLowerCase().includes(ql)) return null;
705 const txt = bodyText(p);
706 const at = txt.toLowerCase().indexOf(ql);
707 if (at < 0) return null;
708 const lo = Math.max(0, at - 30), hi = Math.min(txt.length, at + ql.length + 50);
709 return [lo > 0 ? '…' : '', txt.slice(lo, at), <mark key="m">{txt.slice(at, at + ql.length)}</mark>, txt.slice(at + ql.length, hi), hi < txt.length ? '…' : ''];
710 };
711 const grouped = useMemo(() => {
712 if (start && !q.trim()) return [];
713 const g = {};
714 for (const p of results) {
715 const key = p.sdlc + '|' + p.cat;
716 (g[key] = g[key] || ({
717 sdlc: p.sdlc,
718 cat: p.cat,
719 items: []
720 })).items.push(p);
721 }
722 return Object.values(g);
723 }, [results, start, q]);
724 const copy = async (str, id) => {
725 try {
726 await navigator.clipboard.writeText(str);
727 } catch {
728 const ta = document.createElement('textarea');
729 ta.value = str;
730 ta.setAttribute('readonly', '');
731 ta.style.position = 'fixed';
732 ta.style.opacity = '0';
733 document.body.appendChild(ta);
734 ta.select();
735 document.execCommand('copy');
736 document.body.removeChild(ta);
737 }
738 clearTimeout(copyTimer.current);
739 setCopied(id);
740 copyTimer.current = setTimeout(() => setCopied(null), 1600);
741 };
742 const promptBody = p => {
743 if (!p.slots) return <code>{p.prompt}</code>;
744 const parts = p.prompt.split(/(\{\w+\})/g);
745 return <code>
746 {parts.map((part, idx) => {
747 const m = part.match(/^\{(\w+)\}$/);
748 if (!m) return <span key={idx}>{part}</span>;
749 const k = m[1];
750 const val = fillOf(p, k);
751 return <input key={idx} type="text" className="pl-slot" value={val} placeholder={p.slots[k] || k} aria-label={k} style={{
752 width: widthFor(val || p.slots[k])
753 }} onChange={e => setFill(p.id, k, e.target.value)} onFocus={e => e.target.select()} onClick={e => e.stopPropagation()} />;
754 })}
755 </code>;
756 };
757 const card = p => {
758 const open = openId === p.id;
759 const srcHref = SOURCES[p.src];
760 const srcLabel = sourceLabels[p.src];
761 const snip = matchSnippet(p);
762 return <div key={p.id} className={'pl-card' + (open ? ' pl-open' : '')}>
763 <button type="button" className="pl-head" onClick={() => setOpenId(open ? null : p.id)} aria-expanded={open}>
764 <span className="pl-title">{p.title}</span>
765 {!!p.startN && <span className="pl-chip">{L.startHere} · {p.startN}</span>}
766 </button>
767 {snip ? <div className="pl-match">{snip}</div> : <code className="pl-prompt-preview">{preview(p)}</code>}
768 {open && <div className="pl-body">
769 <div className="pl-label">{p.slots ? L.fillAndCopy : L.copyThis}</div>
770 {p.needs && L.needs && L.needs[p.needs] && <div className="pl-hint pl-needs">
771 <span className="pl-needs-label">{L.needsLabel}</span> {linkify(L.needs[p.needs])}
772 </div>}
773 {p.paste && L.paste && L.paste[p.paste] && <div className="pl-hint pl-paste">{L.paste[p.paste]}</div>}
774 {p.slots && <div className="pl-hint">
775 {L.hintBefore} <span className="pl-hint-chip">{L.hintChip}</span> {L.hintAfter}
776 </div>}
777 <div className="pl-prompt-box">
778 <span className="pl-caret">{'❯'}</span>
779 {promptBody(p)}
780 <button type="button" className="pl-copy" onClick={() => copy(assemble(p), p.id)}>
781 {copied === p.id ? L.copied : L.copy}
782 </button>
783 </div>
784 <div className="pl-label">{L.whyWorks}</div>
785 <div className="pl-teaches">{linkify(p.teaches)}</div>
786 {p.nextHref && p.next && SAFE_HREF.test(p.nextHref) && <div className="pl-next">
787 <span className="pl-next-label">{L.makeItStick}</span>
788 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>
789 </div>}
790 {srcLabel && <div className="pl-src">{L.from} {srcHref ? <a href={doc(srcHref)}>{srcLabel}</a> : srcLabel}</div>}
791 </div>}
792 </div>;
793 };
794 const STYLES = useMemo(() => `
795.pl {
796 --pl-accent: #D97757;
797 --pl-accent-bg: rgba(217,119,87,0.07);
798 --pl-bg: #fff;
799 --pl-surface: #FAFAF7;
800 --pl-border: #E8E6DC;
801 --pl-border-subtle: rgba(31,30,29,0.08);
802 --pl-text: #141413;
803 --pl-text-2: #5E5D59;
804 --pl-text-3: #73726C;
805 --pl-text-4: #9C9A92;
806 --pl-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
807 font-family: 'Anthropic Sans', -apple-system, BlinkMacSystemFont, sans-serif;
808 font-size: 16px; color: var(--pl-text); margin: 8px 0 32px;
809}
810.dark .pl {
811 --pl-bg: #1f1e1d;
812 --pl-surface: #262624;
813 --pl-border: #3d3d3a;
814 --pl-border-subtle: rgba(240,238,230,0.08);
815 --pl-text: #f0eee6;
816 --pl-text-2: #bfbdb4;
817 --pl-text-3: #91908a;
818 --pl-text-4: #73726c;
819}
820.pl *, .pl *::before, .pl *::after { box-sizing: border-box; }
821.pl button { font-family: inherit; cursor: pointer; }
822.pl a { color: var(--pl-accent); text-decoration: none; }
823.pl a:hover { text-decoration: underline; }
824
825.pl-search {
826 display: flex; align-items: center; gap: 10px;
827 padding: 14px 18px; background: var(--pl-surface);
828 border: 1px solid var(--pl-border); border-radius: 12px;
829 margin-bottom: 14px;
830}
831.pl-search input {
832 flex: 1; border: none; outline: none; background: transparent;
833 font-size: 16px; color: var(--pl-text);
834}
835.pl-search input::placeholder { color: var(--pl-text-4); }
836
837.pl-tags { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 18px; }
838.pl-tag {
839 padding: 7px 14px; border: 1px solid var(--pl-border); background: var(--pl-bg);
840 font-size: 14px; color: var(--pl-text-2); border-radius: 999px;
841}
842.pl-tag:hover { background: var(--pl-surface); }
843.pl-tag.pl-on { background: var(--pl-text); border-color: var(--pl-text); color: var(--pl-bg); }
844.pl-tag.pl-start { color: var(--pl-accent); font-weight: 500; }
845.pl-tag.pl-start.pl-on { background: var(--pl-accent); border-color: var(--pl-accent); color: #fff; }
846.pl-tags.pl-dim .pl-tag { opacity: 0.5; }
847.pl-tags.pl-dim .pl-tag:hover { opacity: 1; }
848.pl-sep { width: 1px; height: 22px; background: var(--pl-border); margin: 0 4px; }
849.pl-clear { border: none; background: none; font-size: 13px; color: var(--pl-text-4); padding: 4px 6px; }
850.pl-clear:hover { color: var(--pl-text-2); }
851.pl-count { margin-left: auto; font-size: 14px; color: var(--pl-text-4); }
852
853.pl-group-h {
854 font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase;
855 color: var(--pl-text-4); margin: 24px 0 12px;
856}
857.pl-group-h .pl-phase { color: var(--pl-text-3); }
858.pl-card {
859 border: 1px solid var(--pl-border-subtle); border-radius: 10px;
860 margin-bottom: 12px; background: var(--pl-bg); overflow: hidden;
861 padding: 14px 18px;
862}
863.pl-card.pl-open { border-color: var(--pl-border); background: var(--pl-surface); }
864.pl-head {
865 width: 100%; display: flex; align-items: baseline; gap: 12px;
866 border: none; background: transparent; text-align: left; padding: 0;
867}
868.pl-head:focus-visible { outline: 2px solid var(--pl-accent); outline-offset: 2px; border-radius: 6px; }
869.pl-title {
870 flex: 1; font-size: 17px; font-weight: 500; color: var(--pl-text);
871 white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
872}
873.pl-prompt-preview {
874 display: block; font-family: var(--pl-mono); font-size: 13.5px; color: var(--pl-text-3);
875 margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
876}
877.pl-chip {
878 font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase;
879 padding: 3px 9px; border-radius: 999px; flex-shrink: 0;
880 background: var(--pl-accent-bg); color: var(--pl-accent);
881}
882
883.pl-body { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--pl-border-subtle); }
884.pl-label {
885 font-size: 11.5px; letter-spacing: 0.08em; text-transform: uppercase;
886 color: var(--pl-text-4); margin: 12px 0 8px;
887}
888.pl-prompt-box {
889 display: flex; align-items: center; gap: 10px;
890 padding: 14px 16px; background: #141413; color: #f0eee6;
891 border-radius: 8px; font-family: var(--pl-mono); font-size: 15px;
892}
893.pl-caret { color: var(--pl-accent); flex-shrink: 0; }
894.pl-prompt-box code { flex: 1; background: none; padding: 0; color: inherit; white-space: pre-wrap; line-height: 1.9; }
895.pl-slot {
896 font-family: var(--pl-mono); font-size: inherit;
897 background: rgba(217,119,87,0.15); color: #f0eee6;
898 border: none; border-bottom: 1.5px dashed var(--pl-accent);
899 border-radius: 4px 4px 0 0; padding: 2px 6px; margin: 0 1px;
900 outline: none; min-width: 6ch; max-width: 100%;
901 box-sizing: content-box; cursor: text;
902}
903.pl-slot:hover { background: rgba(217,119,87,0.22); }
904.pl-slot:focus { background: rgba(217,119,87,0.28); border-bottom-style: solid; }
905.pl-slot::placeholder { color: rgba(240,238,230,0.4); font-style: italic; }
906.pl-hint { font-size: 14px; color: var(--pl-text-3); margin: 0 0 10px; }
907.pl-paste { color: var(--pl-text-2); }
908.pl-needs { color: var(--pl-text-2); }
909.pl-needs-label {
910 display: inline-block; font-size: 10.5px; letter-spacing: 0.06em;
911 text-transform: uppercase; padding: 2px 7px; margin-right: 6px;
912 border-radius: 4px; background: var(--pl-accent-bg); color: var(--pl-accent);
913}
914.pl-hint-chip {
915 font-family: var(--pl-mono); font-size: 0.92em;
916 background: var(--pl-accent-bg); color: var(--pl-accent);
917 border-bottom: 1.5px dashed var(--pl-accent);
918 border-radius: 3px 3px 0 0; padding: 1px 5px;
919}
920.pl-copy {
921 font-size: 12.5px; padding: 6px 12px; border-radius: 6px;
922 background: var(--pl-accent); color: #fff; border: none; flex-shrink: 0;
923}
924.pl-teaches { display: block; font-size: 15.5px; color: var(--pl-text-2); margin: 4px 0 0; line-height: 1.6; }
925.pl-match {
926 display: block; font-size: 13.5px; color: var(--pl-text-3);
927 margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
928}
929.pl-match mark { background: var(--pl-accent-bg); color: var(--pl-text); padding: 1px 2px; border-radius: 3px; }
930.pl-next {
931 display: flex; align-items: baseline; gap: 10px;
932 margin: 14px 0 0; padding: 10px 12px;
933 background: var(--pl-accent-bg); border-radius: 8px; font-size: 14.5px;
934}
935.pl-next-label {
936 font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
937 color: var(--pl-accent); font-weight: 600; flex-shrink: 0;
938}
939.pl-src { display: block; font-size: 14px; color: var(--pl-text-4); margin: 14px 0 0; }
940
941.pl-show-all {
942 display: block; width: 100%; padding: 14px; margin-top: 4px;
943 border: 1px dashed var(--pl-border); border-radius: 10px;
944 background: transparent; font-size: 15px; color: var(--pl-accent);
945 text-align: center;
946}
947.pl-show-all:hover { background: var(--pl-accent-bg); border-style: solid; }
948
949.pl-empty {
950 padding: 32px; text-align: center; color: var(--pl-text-4);
951 border: 1px dashed var(--pl-border); border-radius: 10px;
952}
953`, []);
954 if (!mounted) return <div className="pl" style={{
955 minHeight: 480
956 }} />;
957 return <div className="pl">
958 <style>{STYLES}</style>
959
960 <div className="pl-search">
961 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" style={{
962 color: 'var(--pl-text-4)'
963 }}>
964 <circle cx="11" cy="11" r="7" /><line x1="21" y1="21" x2="16.65" y2="16.65" />
965 </svg>
966 <input type="text" placeholder={L.search} value={q} onChange={e => {
967 setQ(e.target.value);
968 if (e.target.value) setStart(false);
969 }} aria-label={L.search} />
970 </div>
971
972 <div className={'pl-tags' + (ql ? ' pl-dim' : '')}>
973 <button type="button" className={'pl-tag pl-start' + (!ql && start ? ' pl-on' : '')} onClick={() => {
974 setQ('');
975 setStart(!start);
976 if (!start) setSel(null);
977 }}>
978 ★ {L.startHere}
979 </button>
980 <span className="pl-sep" />
981 {TAGS.map(k => <button key={k} type="button" aria-pressed={!ql && sel === k} className={'pl-tag' + (!ql && sel === k ? ' pl-on' : '')} onClick={() => {
982 setQ('');
983 toggleTag(k);
984 }}>
985 {TL(k)}
986 </button>)}
987 {(start || sel || q) && <button type="button" className="pl-clear" onClick={clear}>{L.clear}</button>}
988 <span className="pl-count">{results.length} {results.length === 1 ? L.prompt : L.prompts}</span>
989 </div>
990
991 {results.length === 0 ? <div className="pl-empty">
992 {L.noMatch} {ql ? <code>{q}</code> : null} <button type="button" className="pl-clear" onClick={clear}>{L.clear}</button>
993 </div> : !ql && start ? <div>
994 <div className="pl-group-h">{L.startHereHeader}</div>
995 {results.map(card)}
996 <button type="button" className="pl-show-all" onClick={clear}>
997 {L.showAll && L.showAll.replace('{n}', PROMPTS.length)} →
998 </button>
999 </div> : grouped.map(g => <div key={g.sdlc + '|' + g.cat}>
1000 <div className="pl-group-h"><span className="pl-phase">{phaseLabels[g.sdlc] || g.sdlc}</span> · {catLabels[g.cat] || g.cat}</div>
1001 {g.items.map(card)}
1002 </div>)}
1003 </div>;
1004};
1005
1006Esta es una biblioteca de prompts para copiar en Claude Code. Úsela para explorar formas de trabajo que no ha probado, o cuando no esté seguro de dónde empezar.9Esta es una biblioteca de prompts para copiar en Claude Code. Úsela para explorar formas de trabajo que no ha probado, o cuando no esté seguro de dónde empezar.
1007 10
1008Los prompts se recopilan de varias guías de Anthropic, incluyendo [Flujos de trabajo comunes](/docs/es/common-workflows), [Mejores prácticas](/docs/es/best-practices), y [Cómo los equipos de Anthropic usan Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Son puntos de partida en lugar de scripts. Abra **Por qué funciona esto** bajo cualquier prompt para ver el patrón detrás de él para que pueda escribir el suyo propio.11Los prompts se recopilan de varias guías de Anthropic, incluyendo [Flujos de trabajo comunes](/docs/es/common-workflows), [Mejores prácticas](/docs/es/best-practices), y [Cómo los equipos de Anthropic usan Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Son puntos de partida en lugar de scripts. Abra **Por qué funciona esto** bajo cualquier prompt para ver el patrón detrás de él para que pueda escribir el suyo propio.
1009 12
1010export const labels = {13## Qué hace que estos prompts funcionen
1011 startHere: "Comience aquí",
1012 startHereHeader: "Cinco prompts para probar primero",
1013 showAll: "Mostrar todos los {n} prompts",
1014 search: "Buscar prompts…",
1015 clear: "Limpiar",
1016 prompt: "prompt",
1017 prompts: "prompts",
1018 noMatch: "Ningún prompt coincide",
1019 fillAndCopy: "Rellenar y copiar",
1020 copyThis: "Copiar este prompt",
1021 hintBefore: "Escriba en los",
1022 hintChip: "campos destacados",
1023 hintAfter: "para personalizar, luego copie.",
1024 copy: "Copiar",
1025 copied: "Copiado",
1026 whyWorks: "Por qué funciona esto",
1027 makeItStick: "Hacerlo permanente",
1028 from: "De",
1029 paste: {
1030 mockup: "Pegue, arrastre o @-mencione su imagen de maqueta, luego envíe esto:",
1031 design: "Pegue, arrastre o @-mencione su imagen de diseño, luego envíe esto:",
1032 screenshot: "Pegue, arrastre o @-mencione su captura de pantalla, luego envíe esto:",
1033 plan: "Pegue su salida de plan en el prompt primero, luego envíe esto:",
1034 error: "Pegue la salida de error en el prompt primero, luego envíe esto:",
1035 csv: "Arrastre su archivo al prompt, o reemplace la ruta a continuación con una @-mención de la suya:"
1036 },
1037 needsLabel: "Necesita",
1038 needs: {
1039 tracker: "su rastreador de problemas agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp).",
1040 gh: "la [CLI gh](https://cli.github.com) autenticada, o GitHub agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).",
1041 browser: "una forma para que Claude renderice y capture una captura de pantalla del resultado. La [aplicación de escritorio](/docs/es/desktop#preview-your-app) tiene esto integrado. En la terminal, instale la [extensión de Chrome](/docs/es/chrome) o un servidor [MCP](/docs/es/mcp) de Playwright.",
1042 db: "su almacén de datos o almacén de registros agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp)."
1043 }
1044};
1045
1046export const tagLabels = {
1047 understand: "Entender",
1048 plan: "Plan",
1049 prototype: "Prototipo",
1050 build: "Construir",
1051 test: "Prueba",
1052 refactor: "Refactorizar",
1053 review: "Revisar",
1054 steer: "Dirigir",
1055 debug: "Depurar",
1056 git: "Git",
1057 release: "Lanzamiento",
1058 data: "Datos",
1059 automate: "Automatizar",
1060 pm: "Producto",
1061 design: "Diseño",
1062 docs: "Documentación",
1063 marketing: "Marketing",
1064 security: "Seguridad",
1065 ops: "En guardia"
1066};
1067
1068export const phaseLabels = {
1069 discover: "Descubrir",
1070 design: "Diseño",
1071 build: "Construir",
1072 ship: "Enviar",
1073 operate: "Operar"
1074};
1075
1076export const sourceLabels = {
1077 workflows: "Flujos de trabajo comunes",
1078 teams: "Cómo los equipos de Anthropic usan Claude Code",
1079 legal: "Cómo Anthropic usa Claude en Legal",
1080 cybersecurity: "Cómo Anthropic usa Claude en Ciberseguridad",
1081 "best-practices": "Mejores prácticas",
1082 ebook: "Guía de codificación agéntica escalable"
1083};
1084
1085export const catLabels = {
1086 Onboard: "Incorporar",
1087 Understand: "Entender",
1088 Plan: "Plan",
1089 Prototype: "Prototipo",
1090 Implement: "Implementar",
1091 Test: "Prueba",
1092 Refactor: "Refactorizar",
1093 Review: "Revisar",
1094 Steer: "Dirigir",
1095 Git: "Git",
1096 Release: "Lanzamiento",
1097 Debug: "Depurar",
1098 Incident: "Incidente",
1099 Data: "Datos",
1100 Automate: "Automatizar"
1101};
1102
1103export const text = {
1104 "get-oriented-in-a": {
1105 title: "Orientarse en un repositorio nuevo",
1106 teaches: "Describe lo que quieres saber, no qué archivos leer. Claude explora el proyecto por su cuenta y devuelve un resumen de cómo encaja todo.",
1107 next: "Ejecuta `/init` para configurar `CLAUDE.md` y que Claude recuerde esto en cada sesión",
1108 prompt: "dame una visión general de esta base de código: arquitectura, directorios clave y cómo se conectan las piezas"
1109 },
1110 "explain-unfamiliar-code": {
1111 title: "Explicar código desconocido",
1112 teaches: "Nombra el archivo y di en qué formato quieres la respuesta. Cambia la página HTML por un diagrama, viñetas o lo que mejor se adapte a tu forma de aprender.",
1113 next: "Establece un estilo de salida para que Claude siempre explique en tu formato preferido",
1114 prompt: "explica qué hace {path} y cómo fluyen los datos a través de él. escríbelo como {format}",
1115 slots: {
1116 path: "src/scheduler/queue.ts",
1117 format: "una página HTML con un diagrama y luego ábrela en mi navegador"
1118 }
1119 },
1120 "find-where-something-happens": {
1121 title: "Encontrar dónde sucede algo",
1122 teaches: "Busca por comportamiento en lugar de por nombre de archivo. La búsqueda funciona incluso cuando no sabes cómo se llama el archivo ni en qué directorio está.",
1123 prompt: "¿dónde {behavior}?",
1124 slots: {
1125 behavior: "validamos los tipos de archivos subidos"
1126 }
1127 },
1128 "see-what-depends-on": {
1129 title: "Verificar qué se rompe antes de eliminar",
1130 teaches: "Pregunta antes de eliminar cualquier cosa. La lista de llamadores y efectos posteriores te dice si se trata de una limpieza de una línea o de un cambio que necesitas coordinar.",
1131 prompt: "¿qué se rompería si eliminara {target}?",
1132 slots: {
1133 target: "el helper retryWithBackoff"
1134 }
1135 },
1136 "trace-how-code-evolved": {
1137 title: "Rastrear cómo evolucionó el código",
1138 teaches: "Apunta al historial de commits cuando la pregunta es por qué, no qué. Claude lee el registro y el blame del control de versiones que uses y explica las decisiones detrás de la implementación actual.",
1139 prompt: "revisa el historial de commits de {path} y resume cómo evolucionó y por qué",
1140 slots: {
1141 path: "internal/auth/session.go"
1142 }
1143 },
1144 "scope-a-change-before": {
1145 title: "Definir el alcance de un cambio antes de comenzar",
1146 teaches: "Dimensiona el trabajo antes de comprometerlo en una hoja de ruta. La lista de archivos te dice si se trata de un solo componente o de un cambio transversal.",
1147 prompt: "¿qué archivos tendría que modificar para {change}?",
1148 slots: {
1149 change: "agregar un interruptor de modo oscuro a la configuración"
1150 }
1151 },
1152 "ask-the-codebase-a": {
1153 title: "Hacer una pregunta de producto a la base de código",
1154 teaches: "Indica tu rol para que la respuesta tenga el nivel adecuado. Claude explica qué hace realmente el producto a partir del código fuente, sin que necesites leerlo.",
1155 next: "Establece un estilo de salida para que Claude siempre responda a este nivel",
1156 prompt: "soy {role}. explícame paso a paso qué pasa cuando un usuario {action}, desde la UI hasta el resultado",
1157 slots: {
1158 role: "PM",
1159 action: "hace clic en Exportar a PDF"
1160 }
1161 },
1162 "plan-a-multi-file": {
1163 title: "Planificar un cambio de múltiples archivos antes de tocar código",
1164 teaches: "Agregar \"no edites nada todavía\" separa la exploración de los cambios, así ves el enfoque antes de que se mueva cualquier código. Para que planificar primero sea lo predeterminado en cada prompt, presiona Shift+Tab para entrar en [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode).",
1165 prompt: "planifica cómo refactorizar el {target} para {goal}. enumera los archivos que cambiarías, pero no edites nada todavía",
1166 slots: {
1167 target: "módulo de pagos",
1168 goal: "admitir múltiples monedas"
1169 }
1170 },
1171 "draft-a-spec-by": {
1172 title: "Redactar una especificación mediante una entrevista",
1173 teaches: "Pide que te entrevisten en lugar de escribir la especificación tú mismo. Claude te hace preguntas estructuradas hasta completar los requisitos y luego escribe el resultado en un archivo.",
1174 next: "Guarda tus preguntas de entrevista como un skill `/spec` para que cada especificación empiece igual",
1175 prompt: "quiero crear {feature}. entrevístame sobre la implementación, la UX, los casos límite y las compensaciones hasta que hayamos cubierto todo, luego escribe la especificación en SPEC.md",
1176 slots: {
1177 feature: "rate limits por espacio de trabajo"
1178 }
1179 },
1180 "turn-a-meeting-into": {
1181 title: "Convertir una reunión en tickets",
1182 teaches: "Sáltate el paso de transcripción. Claude extrae las tareas pendientes de la entrada no estructurada y las escribe directamente en tu gestor mediante [MCP](/docs/es/mcp), así revisas los tickets, no la transcripción.",
1183 next: "Guarda esto como un skill `/tickets`",
1184 prompt: "lee {input} y redacta las tareas pendientes, luego crea un ticket en {tracker} para cada una con criterios de aceptación",
1185 slots: {
1186 input: "@meeting-notes.md",
1187 tracker: "nuestro gestor de incidencias"
1188 }
1189 },
1190 "map-edge-cases-before": {
1191 title: "Mapear casos límite antes de desarrollar",
1192 teaches: "Pregunta por lo que falta, no por lo que hay. Claude enumera los estados de error, los estados vacíos y los casos límite que un diseño centrado en el camino feliz suele omitir.",
1193 prompt: "enumera los estados de error, los estados vacíos y los casos límite de {feature} que el diseño necesita cubrir",
1194 slots: {
1195 feature: "el flujo de carga de archivos"
1196 }
1197 },
1198 "turn-a-mockup-into": {
1199 title: "Convertir una maqueta en un prototipo funcional",
1200 teaches: "Un prototipo en el que se puede hacer clic responde preguntas que una maqueta estática no puede. Entrega el código funcional a ingeniería en lugar de explicar las interacciones en un documento.",
1201 prompt: "aquí tienes una maqueta. crea un prototipo funcional en el que pueda hacer clic, que respete el diseño y los estados mostrados"
1202 },
1203 "implement-from-a-screenshot": {
1204 title: "Implementar desde una captura de pantalla y autoverificar",
1205 teaches: "Esto le da a Claude un bucle de verificación: renderiza, compara con la imagen de origen e itera sin que tengas que señalar cada diferencia.",
1206 next: "Usa `/goal` para que Claude siga iterando hasta que las capturas de pantalla coincidan",
1207 prompt: "implementa este diseño, luego toma una captura de pantalla del resultado, compárala con el original y corrige cualquier diferencia"
1208 },
1209 "follow-an-existing-pattern": {
1210 title: "Seguir un patrón existente",
1211 teaches: "Señala código que ya te guste. Sin una referencia, Claude recurre a buenas prácticas generales. Con una, se ajusta a las convenciones que tu base de código realmente usa.",
1212 next: "Pide a Claude que escriba en `CLAUDE.md` el patrón que siguió para que las sesiones futuras lo respeten sin la referencia",
1213 prompt: "mira cómo está implementado {example} para entender el patrón y luego crea {new} de la misma manera",
1214 slots: {
1215 example: "el handler de webhooks existente",
1216 new: "un handler de webhooks de pagos"
1217 }
1218 },
1219 "add-a-small-well": {
1220 title: "Agregar una funcionalidad pequeña y bien definida",
1221 teaches: "Indica las entradas y salidas, no cómo implementarla. Claude encuentra dónde está el código similar y agrega el tuyo junto a él.",
1222 prompt: "agrega un endpoint {endpoint} que devuelva {payload}",
1223 slots: {
1224 endpoint: "/health",
1225 payload: "la versión de la app y el tiempo de actividad"
1226 }
1227 },
1228 "build-a-small-internal": {
1229 title: "Crear una herramienta interna pequeña desde cero",
1230 teaches: "No necesitas un proyecto, un framework ni un paso de compilación. Describe la herramienta y pide a Claude que la abra para que la veas funcionando de inmediato.",
1231 prompt: "crea un {tool} usando HTML, CSS y JavaScript puro, luego ábrelo en mi navegador",
1232 slots: {
1233 tool: "tablero Kanban de arrastrar y soltar con tres columnas"
1234 }
1235 },
1236 "work-an-issue-end": {
1237 title: "Resolver una incidencia de principio a fin",
1238 teaches: "Da el número de la incidencia, no un resumen. Claude lee el ticket completo por sí mismo, así que se incluyen los requisitos que olvidarías mencionar, y valida el cambio antes de informarte.",
1239 prompt: "lee la incidencia #{issue}, implementa la corrección y ejecuta las pruebas",
1240 slots: {
1241 issue: "312"
1242 }
1243 },
1244 "find-and-update-copy": {
1245 title: "Encontrar y actualizar textos en toda la base de código",
1246 teaches: "Pide variantes y di qué omitir. Claude encuentra formulaciones que una búsqueda literal pasaría por alto y deja intactos los fixtures de prueba y el historial, así revisas solo el texto que los usuarios realmente ven.",
1247 prompt: "encuentra cada lugar donde decimos \"{copy}\" o una variante cercana, muéstrame cada uno en contexto y luego actualízalos todos a \"{new}\". no toques las pruebas ni el changelog",
1248 slots: {
1249 copy: "Regístrate gratis",
1250 new: "Comienza la prueba gratuita"
1251 }
1252 },
1253 "draft-from-past-examples": {
1254 title: "Redactar un documento a partir de ejemplos anteriores",
1255 teaches: "Señala una carpeta de trabajos terminados en lugar de describir tu estilo. Claude aprende la estructura y la voz de lo que ya publicaste, así el primer borrador parece escrito por ti.",
1256 next: "Guarda la voz como un skill para que cada borrador parta de ahí",
1257 prompt: "lee las {examples} en {folder} para aprender la estructura y la voz, luego redacta una nueva para {topic}",
1258 slots: {
1259 examples: "evaluaciones de impacto en la privacidad",
1260 folder: "legal/pia/",
1261 topic: "la nueva integración de analítica"
1262 }
1263 },
1264 "write-tests-run-them": {
1265 title: "Escribir pruebas, ejecutarlas y corregir fallos",
1266 teaches: "Pide escribir, ejecutar y corregir a la vez para que Claude itere sin detenerse a esperar instrucciones.",
1267 next: "Ejecuta `/init` para que Claude aprenda automáticamente tu comando de pruebas",
1268 prompt: "escribe pruebas para {path}, ejecútalas y corrige cualquier fallo",
1269 slots: {
1270 path: "app/parsers/feed.py"
1271 }
1272 },
1273 "drive-implementation-from-tests": {
1274 title: "Guiar la implementación con pruebas",
1275 teaches: "Desarrollo guiado por pruebas: las pruebas definen cuándo está terminado el trabajo, y Claude itera sobre la implementación hasta que pasen.",
1276 prompt: "escribe primero las pruebas para {feature} y luego impleméntalo hasta que pasen",
1277 slots: {
1278 feature: "el flujo de restablecimiento de contraseña"
1279 }
1280 },
1281 "fill-gaps-from-a": {
1282 title: "Cubrir huecos a partir de un informe de cobertura",
1283 teaches: "Señala el informe de cobertura en lugar de adivinar qué no está probado. Claude lee los números reales y escribe pruebas para los archivos que más las necesitan.",
1284 next: "Establece esto como un `/goal` para que Claude siga escribiendo pruebas hasta alcanzar el objetivo de cobertura",
1285 prompt: "lee {report} y agrega pruebas para los archivos con menor cobertura hasta que cada uno supere el {target}%",
1286 slots: {
1287 report: "coverage/coverage-summary.json",
1288 target: "80"
1289 }
1290 },
1291 "port-code-between-languages": {
1292 title: "Portar código a otro lenguaje",
1293 teaches: "Di qué conservar, no solo el lenguaje de destino. Nombrar la API o el comportamiento que debe mantenerse igual le da a Claude un contrato con el que verificar la migración.",
1294 prompt: "porta {source} a {target}, conservando igual {keep}",
1295 slots: {
1296 source: "este módulo de Python",
1297 target: "Rust",
1298 keep: "la API pública y el comportamiento de las pruebas"
1299 }
1300 },
1301 "generate-docs-for-code": {
1302 title: "Generar documentación para código sin documentar",
1303 teaches: "Nombra el alcance y el formato. Claude encuentra lo que falta y respeta el estilo de comentarios que ya usa el archivo, así la nueva documentación se lee como el resto.",
1304 prompt: "encuentra {scope} sin comentarios {format} y agrégalos, respetando el estilo que ya se usa en el archivo",
1305 slots: {
1306 scope: "las funciones públicas de src/auth/",
1307 format: "JSDoc"
1308 }
1309 },
1310 "migrate-a-pattern-across": {
1311 title: "Migrar un patrón en toda la base de código",
1312 teaches: "Describe el patrón antiguo y el nuevo. Pedirle a Claude que identifique primero cada lugar hace que los puntos de llamada aparezcan en la respuesta, así puedes comprobar que no se omitió ninguno. Para una migración que abarca muchos archivos, ejecuta [/batch](/docs/es/commands). Claude divide el trabajo en unidades para que las apruebes y luego subagentes en segundo plano hacen los cambios.",
1313 prompt: "migra todo de {from} a {to}: identifica cada lugar que necesita cambiar y luego haz los cambios",
1314 slots: {
1315 from: "la API de logging antigua",
1316 to: "el logger estructurado"
1317 }
1318 },
1319 "optimize-against-a-measurable": {
1320 title: "Optimizar hacia un objetivo medible",
1321 teaches: "Indicar la métrica y el objetivo le da a Claude una definición clara de cuándo está terminado.",
1322 next: "Establece esto como un `/goal` para que Claude siga midiendo e iterando hasta alcanzar el número",
1323 prompt: "optimiza {target} para bajar {metric} de {current} a menos de {goal}",
1324 slots: {
1325 target: "la consulta de búsqueda",
1326 metric: "la latencia p95",
1327 current: "2s",
1328 goal: "500ms"
1329 }
1330 },
1331 "fix-a-precise-visual": {
1332 title: "Corregir un error visual preciso",
1333 teaches: "Un feedback visual preciso consigue una corrección precisa. Indica el elemento exacto, la medida y la ventana gráfica.",
1334 next: "Agrega una herramienta de vista previa para que Claude tome capturas de pantalla y verifique la corrección por sí mismo",
1335 prompt: "el {element} sobresale {amount} del {container} en {viewport}. corrígelo.",
1336 slots: {
1337 element: "botón de inicio de sesión",
1338 amount: "20px",
1339 container: "borde de la tarjeta",
1340 viewport: "móvil"
1341 }
1342 },
1343 "review-your-changes-before": {
1344 title: "Revisar tus cambios antes de hacer commit",
1345 teaches: "Detecta problemas mientras todavía requieren menos trabajo para corregirse. Claude lee los archivos modificados completos, no solo las líneas del diff, así encuentra problemas que una autorrevisión rápida pasa por alto.",
1346 next: "Ejecuta `/code-review` para hacer la misma verificación con un solo comando",
1347 prompt: "revisa mis cambios sin commit y señala cualquier cosa que parezca riesgosa antes de hacer commit"
1348 },
1349 "review-a-pull-request": {
1350 title: "Revisar un pull request",
1351 teaches: "Claude revisa con toda la base de código en contexto, no solo el diff. Lee el código modificado y lo que este llama, así detecta problemas que una revisión solo del diff pasaría por alto.",
1352 next: "Ejecuta `/code-review <pr#>` con un solo comando, o activa Code Review para cada PR",
1353 prompt: "revisa el PR #{pr} y resume qué cambió, luego enumera cualquier inquietud",
1354 slots: {
1355 pr: "247"
1356 }
1357 },
1358 "review-infrastructure-changes-before": {
1359 title: "Revisar cambios de infraestructura antes de aplicarlos",
1360 teaches: "La salida del plan es densa y difícil de leer de un vistazo. Al pegarla obtienes un resumen en lenguaje sencillo de lo que realmente va a cambiar antes de aplicarlo.",
1361 prompt: "esta es la salida de mi plan de Terraform. ¿qué va a hacer y hay algo aquí que vaya a causar problemas?"
1362 },
1363 "run-a-security-review": {
1364 title: "Ejecutar una revisión de seguridad con un subagente",
1365 teaches: "Un [subagente](/docs/es/sub-agents) ejecuta la auditoría en su propia ventana de contexto e informa un resumen, así una revisión de seguridad larga no llena tu sesión principal. El subagente integrado de propósito general se encarga de esto sin configuración adicional.",
1366 next: "Configura un subagente dedicado a revisiones de seguridad que todo tu equipo pueda usar",
1367 prompt: "usa un subagente para revisar {path} en busca de problemas de seguridad e informa lo que encuentre",
1368 slots: {
1369 path: "src/api/"
1370 }
1371 },
1372 "review-content-before-sending": {
1373 title: "Detectar problemas antes de la revisión formal",
1374 teaches: "Obtén una primera revisión antes de que una persona le dedique tiempo. Nombra los aspectos que quieres revisar para que la revisión esté enfocada, luego corrige lo que encuentre y envía un borrador más limpio.",
1375 next: "Convierte tu lista de verificación de revisión en un skill que todo tu equipo pueda ejecutar",
1376 prompt: "revisa {file} en busca de {concerns} y enumera todo lo que debería corregir antes de que llegue a {reviewer}",
1377 slots: {
1378 file: "launch-post.md",
1379 concerns: "afirmaciones sin respaldo, atribuciones faltantes y problemas con las pautas de marca",
1380 reviewer: "el equipo legal"
1381 }
1382 },
1383 "course-correct-a-wrong": {
1384 title: "Corregir un enfoque incorrecto",
1385 teaches: "Nombra la restricción que Claude pasó por alto, no solo que está mal. Una razón específica le da a Claude una restricción concreta que cumplir en el reintento, en lugar de volver a adivinar.",
1386 next: "Presiona `Esc` dos veces para abrir el menú de rebobinado y restaurar el código y la conversación, así el reintento empieza desde cero",
1387 prompt: "eso no es correcto: {feedback}. prueba un enfoque diferente",
1388 slots: {
1389 feedback: "la firma de la función debe seguir siendo compatible con versiones anteriores"
1390 }
1391 },
1392 "narrow-the-scope-of": {
1393 title: "Reducir el alcance de un cambio",
1394 teaches: "Cuando la dirección es correcta pero el cambio se extendió demasiado, pide a Claude que conserve una parte en lugar de rebobinar todo. Un límite explícito evita que una corrección pequeña se convierta en una refactorización.",
1395 prompt: "eso es demasiado. conserva solo los cambios en {scope} y deshaz tus otras ediciones",
1396 slots: {
1397 scope: "la lógica de validación en src/forms/"
1398 }
1399 },
1400 "turn-a-correction-into": {
1401 title: "Convertir una corrección en una regla",
1402 teaches: "Una corrección en el chat no se comparte con tu equipo. Una regla en el [CLAUDE.md](/docs/es/memory) del proyecto se comparte en cuanto haces commit de ella, y Claude la lee al inicio de cada sesión.",
1403 next: "Abre `/memory` para revisar lo que escribió Claude",
1404 prompt: "sigues {mistake}. agrega una regla a CLAUDE.md para que esto deje de pasar",
1405 slots: {
1406 mistake: "usando exports por defecto cuando este proyecto usa exports con nombre"
1407 }
1408 },
1409 "resolve-merge-conflicts": {
1410 title: "Resolver conflictos de fusión",
1411 teaches: "Di qué estado quieres, no qué marcadores conservar. Pedir el razonamiento hace que la fusión se pueda revisar en lugar de ser una caja negra.",
1412 prompt: "resuelve los conflictos de fusión en esta rama y explica qué conservaste de cada lado"
1413 },
1414 "commit-with-a-generated": {
1415 title: "Hacer commit con un mensaje generado",
1416 teaches: "Deja que Claude derive el mensaje a partir del diff. Se ajusta al estilo de commits que ya usa tu repositorio.",
1417 prompt: "haz commit de estos cambios con un mensaje que resuma lo que hice"
1418 },
1419 "open-a-pull-request": {
1420 title: "Abrir un pull request desde un ticket",
1421 teaches: "Evita cambiar de contexto entre el gestor de tickets, el editor y GitHub. Un solo prompt lee la especificación, hace el cambio y abre el PR.",
1422 prompt: "encuentra el ticket sobre {topic} en {tracker} y abre un PR que lo implemente",
1423 slots: {
1424 tracker: "nuestro gestor de incidencias",
1425 topic: "el tiempo de espera del inicio de sesión"
1426 }
1427 },
1428 "draft-release-notes-from": {
1429 title: "Redactar notas de la versión a partir del historial de git",
1430 teaches: "Da dos puntos de referencia y la estructura que quieres. Claude lee el registro de commits entre ellos y redacta un changelog que puedes editar.",
1431 next: "Guarda esto como un skill `/changelog`",
1432 prompt: "compara {from} con {to} y redacta notas de la versión agrupadas por funcionalidad, corrección y cambio incompatible",
1433 slots: {
1434 from: "v2.3.0",
1435 to: "v2.4.0"
1436 }
1437 },
1438 "write-a-ci-workflow": {
1439 title: "Escribir un workflow de CI",
1440 teaches: "Describe cuándo debe ejecutarse y qué debe hacer; el YAML se genera por ti, adaptado a los comandos de compilación y pruebas de tu proyecto.",
1441 prompt: "escribe un workflow de GitHub Actions que {steps} en cada push a {branch}",
1442 slots: {
1443 steps: "ejecute las pruebas y despliegue en staging",
1444 branch: "main"
1445 }
1446 },
1447 "find-and-fix-a": {
1448 title: "Encontrar y corregir una prueba fallida",
1449 teaches: "Describe el síntoma; no necesitas saber qué archivo está roto. Claude ejecuta la prueba para ver el fallo, lo rastrea hasta el código fuente y lo corrige.",
1450 prompt: "la prueba {test} está fallando, averigua por qué y corrígela",
1451 slots: {
1452 test: "UserAuth"
1453 }
1454 },
1455 "investigate-a-reported-error": {
1456 title: "Investigar un error reportado",
1457 teaches: "Describe el síntoma y la ubicación; Claude lee la ruta de código relevante y rastrea las causas probables. Pega stack traces o registros si los tienes.",
1458 next: "Pon un deeplink en tu runbook que abra Claude con este prompt ya rellenado",
1459 prompt: "los usuarios están viendo {symptom} en {where}. investiga y dime qué está pasando",
1460 slots: {
1461 symptom: "errores 500",
1462 where: "/api/settings"
1463 }
1464 },
1465 "fix-a-build-error": {
1466 title: "Corregir un error de compilación de raíz",
1467 teaches: "Pedir la causa raíz y la verificación evita parches superficiales que suprimen el error sin corregirlo.",
1468 prompt: "aquí tienes un error de compilación. corrige la causa raíz y verifica que la compilación funcione"
1469 },
1470 "investigate-a-production-incident": {
1471 title: "Investigar un incidente de producción",
1472 teaches: "Enumera las fuentes de evidencia que hay que correlacionar, no los pasos a seguir. Claude lee los registros, el historial de git y la configuración en conjunto para acotar la causa.",
1473 next: "Conecta tu rastreador de errores o tu almacén de registros mediante MCP",
1474 prompt: "{symptom}. revisa los registros, los despliegues recientes y los cambios de configuración, y luego dime la causa más probable",
1475 slots: {
1476 symptom: "el endpoint de checkout empezó a devolver errores 500 hace una hora"
1477 }
1478 },
1479 "query-logs-in-plain": {
1480 title: "Consultar registros en lenguaje natural",
1481 teaches: "Haz la pregunta en lugar de escribir el SQL. Claude crea la consulta, la ejecuta contra tus registros conectados y muestra tanto la consulta como el resultado para que puedas comprobar qué se ejecutó.",
1482 prompt: "muéstrame todos los {events} de {scope} en {timeframe}. escribe la consulta, ejecútala y dime qué llama la atención",
1483 slots: {
1484 events: "inicios de sesión fallidos",
1485 scope: "el servicio de autenticación",
1486 timeframe: "las últimas 24 horas"
1487 }
1488 },
1489 "diagnose-from-a-console": {
1490 title: "Diagnosticar desde una captura de pantalla de la consola",
1491 teaches: "Las consolas en la nube te muestran el problema, pero no los comandos para corregirlo. Claude lee la captura de pantalla y traduce el panel a los comandos de kubectl, gcloud o aws que debes ejecutar.",
1492 prompt: "esta es una captura de pantalla de {console}. explícame paso a paso por qué {resource} está fallando y dame los comandos exactos para corregirlo",
1493 slots: {
1494 console: "nuestro panel de Kubernetes",
1495 resource: "este pod"
1496 }
1497 },
1498 "analyze-a-data-file": {
1499 title: "Analizar un archivo de datos",
1500 teaches: "Una pregunta puntual no necesita un script hecho a medida. Señala un archivo en la carpeta de tu proyecto y Claude lo lee directamente, encuentra los patrones y escribe la salida donde le pidas.",
1501 next: "Conecta la fuente de datos mediante MCP en lugar de exportar archivos",
1502 prompt: "lee {file}, resume los patrones clave y escribe los resultados en {output}",
1503 slots: {
1504 file: "@reports/q1-signups.csv",
1505 output: "una página HTML con gráficos y luego ábrela en mi navegador"
1506 }
1507 },
1508 "generate-variations-from-performance": {
1509 title: "Generar variaciones a partir de datos de rendimiento",
1510 teaches: "Indica la restricción desde el principio para que lo generado se mantenga dentro del límite. Claude lee las métricas, elige qué reemplazar y produce alternativas que se ajusten.",
1511 next: "Conecta la plataforma de anuncios mediante MCP en lugar de exportar un archivo",
1512 prompt: "lee {file}, encuentra los {items} con peor rendimiento y genera {n} variaciones nuevas de menos de {limit} caracteres",
1513 slots: {
1514 file: "@ads-performance.csv",
1515 items: "titulares",
1516 n: "20",
1517 limit: "90"
1518 }
1519 },
1520 "turn-a-recurring-task": {
1521 title: "Convertir una tarea recurrente en un skill",
1522 teaches: "Nombra los pasos una vez; reutilízalos como un comando. Claude escribe un [skill](/docs/es/skills) que cualquier persona de tu equipo puede ejecutar.",
1523 prompt: "crea un skill /{name} para este proyecto que {steps}",
1524 slots: {
1525 name: "ship",
1526 steps: "ejecute el linter y las pruebas y luego redacte un mensaje de commit"
1527 }
1528 },
1529 "add-a-hook-for": {
1530 title: "Agregar un hook para un comportamiento repetido",
1531 teaches: "Los hooks hacen que un comportamiento sea automático en lugar de algo que tienes que acordarte de pedir. Describe el disparador y la acción, y Claude escribe la configuración del [hook](/docs/es/hooks).",
1532 prompt: "escribe un hook que {action} después de cada {event}",
1533 slots: {
1534 action: "ejecute prettier",
1535 event: "edición de un archivo .ts o .tsx"
1536 }
1537 },
1538 "connect-a-tool-with": {
1539 title: "Conectar una herramienta con MCP",
1540 teaches: "Conecta la fuente una vez en lugar de pegar datos en cada sesión. Tras configurar [MCP](/docs/es/mcp), Claude lee directamente de la herramienta cuando le preguntas por ella.",
1541 prompt: "conecta {server} mediante MCP para que puedas leer sus {data} directamente",
1542 slots: {
1543 server: "nuestro rastreador de errores",
1544 data: "stack traces"
1545 }
1546 },
1547 "capture-what-to-remember": {
1548 title: "Capturar qué recordar para la próxima vez",
1549 teaches: "Pregunta antes de que se te olvide. Claude sabe qué tuvo que averiguar en esta sesión y propone entradas para [CLAUDE.md](/docs/es/memory) para que la siguiente sesión empiece con ese contexto.",
1550 prompt: "resume lo que hicimos en esta sesión y sugiere qué agregar a CLAUDE.md"
1551 }
1552};
1553
1554<PromptLibrary text={text} labels={labels} tagLabels={tagLabels} phaseLabels={phaseLabels} sourceLabels={sourceLabels} catLabels={catLabels} />
1555
1556<h2 id="what-makes-these-prompts-work">
1557 Qué hace que estos prompts funcionen
1558</h2>
1559 14
1560Los prompts anteriores comparten algunos patrones. Reconocerlos le ayuda a adaptar cualquier prompt aquí a su propia tarea.15Los prompts anteriores comparten algunos patrones. Reconocerlos le ayuda a adaptar cualquier prompt aquí a su propia tarea.
1561 16
1597 52
1598Para más información sobre cada patrón, consulte [mejores prácticas](/docs/es/best-practices).53Para más información sobre cada patrón, consulte [mejores prácticas](/docs/es/best-practices).
1599 54
1600<h2 id="where-these-come-from">55## De dónde vienen estos
1601 De dónde vienen estos
1602</h2>
1603 56
1604Estos prompts se basan en patrones de recursos publicados de Anthropic. Cada tarjeta vincula a su fuente:57Estos prompts se basan en patrones de recursos publicados de Anthropic. Cada tarjeta vincula a su fuente:
1605 58
1610 63
1611Para tutoriales en video de estos patrones, consulte el curso gratuito [Claude Code in Action](https://academy.claude.com/courses/claude-code-in-action) en [Claude Academy](https://academy.claude.com/).64Para tutoriales en video de estos patrones, consulte el curso gratuito [Claude Code in Action](https://academy.claude.com/courses/claude-code-in-action) en [Claude Academy](https://academy.claude.com/).
1612 65
1613<h2 id="related-resources">66## Recursos relacionados
1614 Recursos relacionados
1615</h2>
1616 67
1617Los prompts en esta página son puntos de partida. Una vez que uno funciona para su proyecto, el siguiente paso es hacerlo repetible: guárdelo como una [habilidad](/docs/es/skills) para que cualquiera en su equipo pueda ejecutarlo como un `/comando`, y registre las convenciones que Claude aprendió en [CLAUDE.md](/docs/es/memory) para que cada sesión comience con ese contexto en lugar de que Claude lo reaprendan. Para cambios más grandes o más riesgosos, [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) le muestra la lista de archivos antes de que ocurran ediciones.68Los prompts en esta página son puntos de partida. Una vez que uno funciona para su proyecto, el siguiente paso es hacerlo repetible: guárdelo como una [habilidad](/docs/es/skills) para que cualquiera en su equipo pueda ejecutarlo como un `/comando`, y registre las convenciones que Claude aprendió en [CLAUDE.md](/docs/es/memory) para que cada sesión comience con ese contexto en lugar de que Claude lo reaprendan. Para cambios más grandes o más riesgosos, [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) le muestra la lista de archivos antes de que ocurran ediciones.
1618 69