6 6
7> Copie e cole prompts para Claude Code, marcados por tarefa e função.7> Copie e cole prompts para Claude Code, marcados por tarefa e função.
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 é uma biblioteca de prompts para copiar no Claude Code. Use-a para explorar formas de trabalho que você ainda não experimentou, ou quando não tem certeza por onde começar.9Esta é uma biblioteca de prompts para copiar no Claude Code. Use-a para explorar formas de trabalho que você ainda não experimentou, ou quando não tem certeza por onde começar.
1007 10
1008Os prompts foram coletados de vários guias da Anthropic, incluindo [Fluxos de trabalho comuns](/docs/pt/common-workflows), [Melhores práticas](/docs/pt/best-practices) e [Como os times da Anthropic usam Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Eles são pontos de partida, não scripts. Abra **Por que isso funciona** em qualquer prompt para ver o padrão por trás dele, para que você possa escrever o seu próprio.11Os prompts foram coletados de vários guias da Anthropic, incluindo [Fluxos de trabalho comuns](/docs/pt/common-workflows), [Melhores práticas](/docs/pt/best-practices) e [Como os times da Anthropic usam Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Eles são pontos de partida, não scripts. Abra **Por que isso funciona** em qualquer prompt para ver o padrão por trás dele, para que você possa escrever o seu próprio.
1009 12
1010export const labels = {13## O que torna esses prompts funcionarem
1011 startHere: "Comece aqui",
1012 startHereHeader: "Cinco prompts para tentar primeiro",
1013 showAll: "Mostrar todos os {n} prompts",
1014 search: "Pesquisar prompts…",
1015 clear: "Limpar",
1016 prompt: "prompt",
1017 prompts: "prompts",
1018 noMatch: "Nenhum prompt corresponde",
1019 fillAndCopy: "Preencher e copiar",
1020 copyThis: "Copiar este prompt",
1021 hintBefore: "Digite nos",
1022 hintChip: "campos destacados",
1023 hintAfter: "para personalizar e depois copie.",
1024 copy: "Copiar",
1025 copied: "Copiado",
1026 whyWorks: "Por que isso funciona",
1027 makeItStick: "Fixe isso",
1028 from: "De",
1029 paste: {
1030 mockup: "Cole, arraste ou @-mencione sua imagem de mockup e depois envie isto:",
1031 design: "Cole, arraste ou @-mencione sua imagem de design e depois envie isto:",
1032 screenshot: "Cole, arraste ou @-mencione sua captura de tela e depois envie isto:",
1033 plan: "Cole sua saída de plano no prompt primeiro e depois envie isto:",
1034 error: "Cole a saída de erro no prompt primeiro e depois envie isto:",
1035 csv: "Arraste seu arquivo para o prompt ou substitua o caminho abaixo por uma @-menção do seu:"
1036 },
1037 needsLabel: "Precisa",
1038 needs: {
1039 tracker: "seu rastreador de problemas adicionado como um [conector claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) ou [servidor MCP](/docs/pt/mcp).",
1040 gh: "a [CLI gh](https://cli.github.com) autenticada, ou GitHub adicionado como um [conector claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai).",
1041 browser: "uma forma para Claude renderizar e fazer captura de tela do resultado. O [aplicativo Desktop](/docs/pt/desktop#preview-your-app) tem isso integrado. No terminal, instale a [extensão Chrome](/docs/pt/chrome) ou um servidor MCP [Playwright](/docs/pt/mcp).",
1042 db: "seu data warehouse ou armazenamento de logs adicionado como um [conector claude.ai](/docs/pt/mcp#use-mcp-servers-from-claude-ai) ou [servidor MCP](/docs/pt/mcp)."
1043 }
1044};
1045
1046export const tagLabels = {
1047 understand: "Entender",
1048 plan: "Planejar",
1049 prototype: "Protótipo",
1050 build: "Construir",
1051 test: "Testar",
1052 refactor: "Refatorar",
1053 review: "Revisar",
1054 steer: "Orientar",
1055 debug: "Depurar",
1056 git: "Git",
1057 release: "Lançamento",
1058 data: "Dados",
1059 automate: "Automatizar",
1060 pm: "Produto",
1061 design: "Design",
1062 docs: "Documentação",
1063 marketing: "Marketing",
1064 security: "Segurança",
1065 ops: "Plantão"
1066};
1067
1068export const phaseLabels = {
1069 discover: "Descobrir",
1070 design: "Design",
1071 build: "Construir",
1072 ship: "Lançar",
1073 operate: "Operar"
1074};
1075
1076export const sourceLabels = {
1077 workflows: "Fluxos de trabalho comuns",
1078 teams: "Como os times da Anthropic usam Claude Code",
1079 legal: "Como a Anthropic usa Claude em Jurídico",
1080 cybersecurity: "Como a Anthropic usa Claude em Segurança Cibernética",
1081 "best-practices": "Melhores práticas",
1082 ebook: "Guia de codificação agentic em escala"
1083};
1084
1085export const catLabels = {
1086 Onboard: "Integração",
1087 Understand: "Entender",
1088 Plan: "Planejar",
1089 Prototype: "Protótipo",
1090 Implement: "Implementar",
1091 Test: "Testar",
1092 Refactor: "Refatorar",
1093 Review: "Revisar",
1094 Steer: "Orientar",
1095 Git: "Git",
1096 Release: "Lançamento",
1097 Debug: "Depurar",
1098 Incident: "Incidente",
1099 Data: "Dados",
1100 Automate: "Automatizar"
1101};
1102
1103export const text = {
1104 "get-oriented-in-a": {
1105 title: "Orientar-se em um novo repositório",
1106 teaches: "Descreva o que você quer saber, não quais arquivos ler. Claude explora o projeto por conta própria e retorna um resumo de como ele se encaixa.",
1107 next: "Execute `/init` para configurar `CLAUDE.md` para que Claude se lembre disso a cada sessão",
1108 prompt: "me dê uma visão geral desta base de código: arquitetura, diretórios principais e como as partes se conectam"
1109 },
1110 "explain-unfamiliar-code": {
1111 title: "Explicar código desconhecido",
1112 teaches: "Nomeie o arquivo e diga em qual formato você quer a resposta. Troque a página HTML por um diagrama, tópicos ou o que se adequar a como você aprende.",
1113 next: "Defina um estilo de saída para que Claude sempre explique em seu formato preferido",
1114 prompt: "explique o que {path} faz e como os dados fluem por ele. escreva isso como {format}",
1115 slots: {
1116 path: "src/scheduler/queue.ts",
1117 format: "uma página HTML com um diagrama e depois abra-a no meu navegador"
1118 }
1119 },
1120 "find-where-something-happens": {
1121 title: "Encontrar onde algo acontece",
1122 teaches: "Pesquise por comportamento em vez de por nome de arquivo. A pesquisa funciona mesmo quando você não sabe como o arquivo é chamado ou em qual diretório ele está.",
1123 prompt: "onde nós {behavior}?",
1124 slots: {
1125 behavior: "validamos os tipos de arquivo enviados"
1126 }
1127 },
1128 "see-what-depends-on": {
1129 title: "Verificar o que quebra antes de você deletar",
1130 teaches: "Pergunte antes de remover qualquer coisa. A lista de chamadores e efeitos downstream diz se você está olhando para uma limpeza de uma linha ou uma mudança que você precisa coordenar.",
1131 prompt: "o que quebraria se eu deletasse {target}?",
1132 slots: {
1133 target: "o helper retryWithBackoff"
1134 }
1135 },
1136 "trace-how-code-evolved": {
1137 title: "Rastrear como o código evoluiu",
1138 teaches: "Aponte para o histórico de commits quando a pergunta é por quê, não o quê. Claude lê o log e blame para qualquer controle de versão que você use e explica as decisões por trás da implementação atual.",
1139 prompt: "examine o histórico de commits de {path} e resuma como ele evoluiu e por quê",
1140 slots: {
1141 path: "internal/auth/session.go"
1142 }
1143 },
1144 "scope-a-change-before": {
1145 title: "Definir o escopo de uma mudança antes de começar",
1146 teaches: "Dimensione o trabalho antes de comprometê-lo com um roadmap. A lista de arquivos diz se você está olhando para um componente ou uma mudança transversal.",
1147 prompt: "quais arquivos eu precisaria alterar para {change}?",
1148 slots: {
1149 change: "adicionar um botão de alternância de modo escuro nas configurações"
1150 }
1151 },
1152 "ask-the-codebase-a": {
1153 title: "Fazer uma pergunta de produto à base de código",
1154 teaches: "Declare seu papel para que a resposta seja no nível certo. Claude explica o que o produto realmente faz a partir do código-fonte, sem você precisar lê-lo.",
1155 next: "Defina um estilo de saída para que Claude sempre apresente respostas neste nível",
1156 prompt: "eu sou {role}. me explique passo a passo o que acontece quando um usuário {action}, da UI até o resultado",
1157 slots: {
1158 role: "PM",
1159 action: "clica em Exportar para PDF"
1160 }
1161 },
1162 "plan-a-multi-file": {
1163 title: "Planejar uma mudança em vários arquivos antes de tocar no código",
1164 teaches: "Adicionar \"não edite ainda\" separa exploração de mudanças, para que você veja a abordagem antes de qualquer código se mover. Para fazer o planejamento primeiro o padrão em cada prompt, pressione Shift+Tab para o [modo de planejamento](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode).",
1165 prompt: "planeje como refatorar o {target} para {goal}. liste os arquivos que você alteraria, mas não edite nada ainda",
1166 slots: {
1167 target: "módulo de pagamento",
1168 goal: "suportar várias moedas"
1169 }
1170 },
1171 "draft-a-spec-by": {
1172 title: "Rascunhar uma especificação por entrevista",
1173 teaches: "Peça para ser entrevistado em vez de escrever a especificação você mesmo. Claude faz perguntas estruturadas até que os requisitos estejam completos e depois escreve o resultado em um arquivo.",
1174 next: "Salve suas perguntas de entrevista como uma skill `/spec` para que cada especificação comece da mesma forma",
1175 prompt: "quero criar {feature}. me entreviste sobre implementação, UX, casos extremos e tradeoffs até cobrirmos tudo, depois escreva a especificação em SPEC.md",
1176 slots: {
1177 feature: "rate limits por workspace"
1178 }
1179 },
1180 "turn-a-meeting-into": {
1181 title: "Transformar uma reunião em tickets",
1182 teaches: "Pule a etapa de transcrição. Claude extrai itens de ação da entrada não estruturada e os escreve diretamente em seu rastreador via [MCP](/docs/pt/mcp), para que você revise os tickets, não a transcrição.",
1183 next: "Salve isto como uma skill `/tickets`",
1184 prompt: "leia {input} e redija os itens de ação, depois crie um ticket no {tracker} para cada um com critérios de aceitação",
1185 slots: {
1186 input: "@meeting-notes.md",
1187 tracker: "nosso rastreador de problemas"
1188 }
1189 },
1190 "map-edge-cases-before": {
1191 title: "Mapear casos extremos antes de desenvolver",
1192 teaches: "Peça pelo que está faltando, não pelo que está lá. Claude lista os estados de erro, estados vazios e casos extremos que um design de caminho feliz tende a pular.",
1193 prompt: "liste os estados de erro, estados vazios e casos extremos de {feature} que o design precisa cobrir",
1194 slots: {
1195 feature: "o fluxo de upload de arquivos"
1196 }
1197 },
1198 "turn-a-mockup-into": {
1199 title: "Transformar um mockup em um protótipo funcional",
1200 teaches: "Um protótipo clicável responde perguntas que um mockup estático não consegue. Entregue o código funcional à engenharia em vez de explicar as interações em um documento.",
1201 prompt: "aqui está um mockup. crie um protótipo funcional no qual eu possa clicar, correspondendo ao layout e aos estados mostrados"
1202 },
1203 "implement-from-a-screenshot": {
1204 title: "Implementar a partir de uma captura de tela e auto-verificar",
1205 teaches: "Isto dá a Claude um loop de verificação: ele renderiza, compara com a imagem de origem e itera sem você apontar cada lacuna.",
1206 next: "Use `/goal` para manter Claude iterando até que as capturas de tela correspondam",
1207 prompt: "implemente este design, depois faça uma captura de tela do resultado, compare-a com o original e corrija quaisquer diferenças"
1208 },
1209 "follow-an-existing-pattern": {
1210 title: "Seguir um padrão existente",
1211 teaches: "Aponte para código que você já gosta. Sem uma referência, Claude usa como padrão as boas práticas gerais. Com uma, ele corresponde às convenções que sua base de código realmente usa.",
1212 next: "Peça a Claude para escrever o padrão que seguiu em `CLAUDE.md` para que futuras sessões o correspondam sem a referência",
1213 prompt: "veja como {example} é implementado para entender o padrão, depois crie {new} da mesma forma",
1214 slots: {
1215 example: "o handler de webhook existente",
1216 new: "um handler de webhook de pagamentos"
1217 }
1218 },
1219 "add-a-small-well": {
1220 title: "Adicionar um recurso pequeno e bem definido",
1221 teaches: "Declare as entradas e saídas, não como criá-lo. Claude encontra onde código similar vive e adiciona o seu ao lado.",
1222 prompt: "adicione um endpoint {endpoint} que retorne {payload}",
1223 slots: {
1224 endpoint: "/health",
1225 payload: "a versão do app e o uptime"
1226 }
1227 },
1228 "build-a-small-internal": {
1229 title: "Criar uma pequena ferramenta interna do zero",
1230 teaches: "Você não precisa de um projeto, um framework ou uma etapa de build. Descreva a ferramenta e peça a Claude para abri-la para que você a veja funcionando imediatamente.",
1231 prompt: "crie {tool} usando HTML, CSS e JavaScript puro, depois abra-o no meu navegador",
1232 slots: {
1233 tool: "um quadro Kanban de arrastar e soltar com três colunas"
1234 }
1235 },
1236 "work-an-issue-end": {
1237 title: "Trabalhar um problema de ponta a ponta",
1238 teaches: "Dê o número do problema, não um resumo. Claude lê o ticket completo por conta própria, para que requisitos que você esqueceria de mencionar apareçam, e valida a mudança antes de relatar.",
1239 prompt: "leia a issue #{issue}, implemente a correção e execute os testes",
1240 slots: {
1241 issue: "312"
1242 }
1243 },
1244 "find-and-update-copy": {
1245 title: "Encontrar e atualizar textos em toda a base de código",
1246 teaches: "Peça por variantes e diga o que pular. Claude encontra fraseados que uma pesquisa literal perderia e deixa fixtures de teste e histórico intocados, para que você revise apenas os textos que os usuários realmente veem.",
1247 prompt: "encontre todos os lugares onde dizemos \"{copy}\" ou uma variante próxima, mostre-me cada um no contexto, depois atualize todos para \"{new}\". não mexa nos testes nem no changelog",
1248 slots: {
1249 copy: "Cadastre-se grátis",
1250 new: "Comece o teste grátis"
1251 }
1252 },
1253 "draft-from-past-examples": {
1254 title: "Rascunhar um documento a partir de exemplos passados",
1255 teaches: "Aponte para uma pasta de trabalho concluída em vez de descrever seu estilo. Claude aprende a estrutura e a voz do que você já lançou, para que o primeiro rascunho pareça um dos seus.",
1256 next: "Salve a voz como uma skill para que cada rascunho comece lá",
1257 prompt: "leia as {examples} em {folder} para aprender a estrutura e a voz, depois redija uma nova para {topic}",
1258 slots: {
1259 examples: "avaliações de impacto de privacidade",
1260 folder: "legal/pia/",
1261 topic: "a nova integração de analytics"
1262 }
1263 },
1264 "write-tests-run-them": {
1265 title: "Escrever testes, executá-los, corrigir falhas",
1266 teaches: "Peça para escrever, executar e corrigir juntos para que Claude itere sem parar para instruções.",
1267 next: "Execute `/init` para que Claude aprenda seu comando de teste automaticamente",
1268 prompt: "escreva testes para {path}, execute-os e corrija quaisquer falhas",
1269 slots: {
1270 path: "app/parsers/feed.py"
1271 }
1272 },
1273 "drive-implementation-from-tests": {
1274 title: "Conduzir implementação a partir de testes",
1275 teaches: "Desenvolvimento orientado por testes: os testes definem quando o trabalho está completo e Claude itera na implementação até que passem.",
1276 prompt: "escreva testes para {feature} primeiro, depois implemente até que passem",
1277 slots: {
1278 feature: "o fluxo de redefinição de senha"
1279 }
1280 },
1281 "fill-gaps-from-a": {
1282 title: "Preencher lacunas a partir de um relatório de cobertura",
1283 teaches: "Aponte para o relatório de cobertura em vez de adivinhar o que não foi testado. Claude lê os números reais e escreve testes para os arquivos que mais precisam.",
1284 next: "Defina isto como um `/goal` para que Claude continue escrevendo testes até que a cobertura atinja o alvo",
1285 prompt: "leia {report} e adicione testes para os arquivos com menor cobertura até que cada um esteja acima de {target}%",
1286 slots: {
1287 report: "coverage/coverage-summary.json",
1288 target: "80"
1289 }
1290 },
1291 "port-code-between-languages": {
1292 title: "Portar código para outra linguagem",
1293 teaches: "Diga o que preservar, não apenas a linguagem de destino. Nomear a API ou comportamento que deve permanecer igual dá a Claude um contrato para verificar a portabilidade.",
1294 prompt: "porte {source} para {target}, mantendo {keep}",
1295 slots: {
1296 source: "este módulo Python",
1297 target: "Rust",
1298 keep: "a mesma API pública e o mesmo comportamento dos testes"
1299 }
1300 },
1301 "generate-docs-for-code": {
1302 title: "Gerar documentação para código não documentado",
1303 teaches: "Nomeie o escopo e o formato. Claude encontra o que está faltando e corresponde ao estilo de comentário já no arquivo, para que a nova documentação pareça o resto.",
1304 prompt: "encontre {scope} sem comentários {format} e adicione-os, seguindo o estilo já usado no arquivo",
1305 slots: {
1306 scope: "as funções públicas em src/auth/",
1307 format: "JSDoc"
1308 }
1309 },
1310 "migrate-a-pattern-across": {
1311 title: "Migrar um padrão em toda a base de código",
1312 teaches: "Descreva o padrão antigo e o novo. Pedir a Claude para identificar cada lugar primeiro significa que os locais de chamada são listados na resposta, para que você possa verificar se nenhum foi perdido. Para uma migração em muitos arquivos, execute [/batch](/docs/pt/commands). Claude divide o trabalho em unidades para você aprovar, depois subagentes em background fazem as mudanças.",
1313 prompt: "migre tudo de {from} para {to}: identifique cada lugar que precisa mudar, depois faça as mudanças",
1314 slots: {
1315 from: "a API de logging antiga",
1316 to: "o logger estruturado"
1317 }
1318 },
1319 "optimize-against-a-measurable": {
1320 title: "Otimizar contra um alvo mensurável",
1321 teaches: "Declarar a métrica e o alvo dá a Claude uma definição clara de conclusão.",
1322 next: "Defina isto como um `/goal` para que Claude continue medindo e iterando até atingir o número",
1323 prompt: "otimize {target} para reduzir {metric} de {current} para menos de {goal}",
1324 slots: {
1325 target: "a consulta de pesquisa",
1326 metric: "a latência p95",
1327 current: "2s",
1328 goal: "500ms"
1329 }
1330 },
1331 "fix-a-precise-visual": {
1332 title: "Corrigir um bug visual preciso",
1333 teaches: "Feedback visual preciso obtém uma correção precisa. Declare o elemento exato, medição e viewport.",
1334 next: "Adicione uma ferramenta de visualização para que Claude faça captura de tela e verifique a correção por conta própria",
1335 prompt: "o {element} se estende {amount} além da {container} no {viewport}. corrija isso.",
1336 slots: {
1337 element: "botão de login",
1338 amount: "20px",
1339 container: "borda do card",
1340 viewport: "mobile"
1341 }
1342 },
1343 "review-your-changes-before": {
1344 title: "Revisar suas mudanças antes de fazer commit",
1345 teaches: "Pegue problemas enquanto ainda exigem menos trabalho para corrigir. Claude lê os arquivos alterados na íntegra, não apenas as linhas de diff, para que detecte problemas que uma auto-revisão rápida perde.",
1346 next: "Execute `/code-review` para a mesma verificação em um comando",
1347 prompt: "revise minhas mudanças sem commit e sinalize qualquer coisa que pareça arriscada antes de eu fazer commit"
1348 },
1349 "review-a-pull-request": {
1350 title: "Revisar um pull request",
1351 teaches: "Claude revisa com toda a base de código em contexto, não apenas o diff. Ele lê o código alterado e o que ele chama, para que detecte problemas que uma revisão apenas de diff perderia.",
1352 next: "Execute `/code-review <pr#>` em um comando, ou ative Code Review para cada PR",
1353 prompt: "revise o PR #{pr} e resuma o que mudou, depois liste quaisquer preocupações",
1354 slots: {
1355 pr: "247"
1356 }
1357 },
1358 "review-infrastructure-changes-before": {
1359 title: "Revisar mudanças de infraestrutura antes de aplicar",
1360 teaches: "A saída do plano é densa e difícil de escanear. Colá-la obtém um resumo em linguagem simples do que realmente vai mudar antes de você aplicar.",
1361 prompt: "aqui está a saída do meu plano do Terraform. o que isso vai fazer, e algo aqui vai causar problemas?"
1362 },
1363 "run-a-security-review": {
1364 title: "Executar uma revisão de segurança com um subagente",
1365 teaches: "Um [subagente](/docs/pt/sub-agents) executa a auditoria em sua própria janela de contexto e relata um resumo, para que uma revisão de segurança longa não preencha sua sessão principal. O subagente de propósito geral integrado lida com isto sem configuração extra.",
1366 next: "Configure um subagente dedicado de revisão de segurança que todo o seu time possa usar",
1367 prompt: "use um subagente para revisar {path} em busca de problemas de segurança e relate o que ele encontrar",
1368 slots: {
1369 path: "src/api/"
1370 }
1371 },
1372 "review-content-before-sending": {
1373 title: "Detectar problemas antes da revisão formal",
1374 teaches: "Obtenha uma primeira passagem antes de um humano gastar tempo com isto. Nomeie as preocupações que você quer verificadas para que a revisão seja focada e depois corrija o que encontra e envie um rascunho mais limpo.",
1375 next: "Capture sua lista de verificação de revisão como uma skill que todo o seu time possa executar",
1376 prompt: "revise {file} em busca de {concerns} e liste qualquer coisa que eu deva corrigir antes de enviar para {reviewer}",
1377 slots: {
1378 file: "launch-post.md",
1379 concerns: "afirmações sem suporte, atribuições ausentes e problemas com as diretrizes da marca",
1380 reviewer: "o jurídico"
1381 }
1382 },
1383 "course-correct-a-wrong": {
1384 title: "Corrigir uma abordagem errada",
1385 teaches: "Nomeie a restrição que Claude perdeu, não apenas que está errado. Uma razão específica dá a Claude uma restrição concreta a satisfazer na nova tentativa, em vez de adivinhar novamente.",
1386 next: "Pressione `Esc` duas vezes para abrir o menu de retrocesso e restaurar código e conversa para que a nova tentativa comece limpa",
1387 prompt: "isso não está certo: {feedback}. tente uma abordagem diferente",
1388 slots: {
1389 feedback: "a assinatura da função precisa continuar retrocompatível"
1390 }
1391 },
1392 "narrow-the-scope-of": {
1393 title: "Estreitar o escopo de uma mudança",
1394 teaches: "Quando a direção está certa mas a mudança ficou muito ampla, peça a Claude para manter parte dela em vez de retroceder tudo. Um limite declarado impede que uma pequena correção se torne uma refatoração.",
1395 prompt: "isso é demais. mantenha apenas as mudanças em {scope} e desfaça suas outras edições",
1396 slots: {
1397 scope: "a lógica de validação em src/forms/"
1398 }
1399 },
1400 "turn-a-correction-into": {
1401 title: "Transformar uma correção em uma regra",
1402 teaches: "Uma correção no chat não é compartilhada com seu time. Uma regra no [CLAUDE.md](/docs/pt/memory) do projeto é compartilhada assim que você faz commit dela, e Claude a lê no início de cada sessão.",
1403 next: "Abra `/memory` para revisar o que Claude escreveu",
1404 prompt: "você continua {mistake}. adicione uma regra ao CLAUDE.md para que isso pare de acontecer",
1405 slots: {
1406 mistake: "usando exports default quando este projeto usa exports nomeados"
1407 }
1408 },
1409 "resolve-merge-conflicts": {
1410 title: "Resolver conflitos de merge",
1411 teaches: "Diga qual estado você quer, não quais marcadores manter. Pedir o raciocínio torna o merge revisável em vez de uma caixa preta.",
1412 prompt: "resolva os conflitos de merge neste branch e explique o que você manteve de cada lado"
1413 },
1414 "commit-with-a-generated": {
1415 title: "Fazer commit com uma mensagem gerada",
1416 teaches: "Deixe Claude derivar a mensagem do diff. Ela corresponde ao estilo de commit existente do seu repositório.",
1417 prompt: "faça commit destas mudanças com uma mensagem que resuma o que eu fiz"
1418 },
1419 "open-a-pull-request": {
1420 title: "Abrir um pull request a partir de um ticket",
1421 teaches: "Pule a troca de contexto entre rastreador, editor e GitHub. Um prompt lê a especificação, faz a mudança e abre o PR.",
1422 prompt: "encontre o ticket sobre {topic} no {tracker} e abra um PR que o implemente",
1423 slots: {
1424 tracker: "nosso rastreador de problemas",
1425 topic: "o timeout de login"
1426 }
1427 },
1428 "draft-release-notes-from": {
1429 title: "Rascunhar notas de lançamento do histórico git",
1430 teaches: "Dê dois pontos de referência e a estrutura que você quer. Claude lê o log de commits entre eles e rascunha um changelog que você pode editar.",
1431 next: "Salve isto como uma skill `/changelog`",
1432 prompt: "compare {from} com {to} e redija notas de lançamento agrupadas por recurso, correção e breaking change",
1433 slots: {
1434 from: "v2.3.0",
1435 to: "v2.4.0"
1436 }
1437 },
1438 "write-a-ci-workflow": {
1439 title: "Escrever um workflow de CI",
1440 teaches: "Descreva quando deve ser executado e o que deve fazer; o YAML é gerado para você, correspondendo aos comandos de build e teste do seu projeto.",
1441 prompt: "escreva um workflow do GitHub Actions que {steps} a cada push para {branch}",
1442 slots: {
1443 steps: "execute os testes e faça deploy para staging",
1444 branch: "main"
1445 }
1446 },
1447 "find-and-fix-a": {
1448 title: "Encontrar e corrigir um teste falhando",
1449 teaches: "Descreva o sintoma; você não precisa saber qual arquivo está quebrado. Claude executa o teste para ver a falha, rastreia-a até o código-fonte e a corrige.",
1450 prompt: "o teste {test} está falhando, descubra por que e corrija-o",
1451 slots: {
1452 test: "UserAuth"
1453 }
1454 },
1455 "investigate-a-reported-error": {
1456 title: "Investigar um erro relatado",
1457 teaches: "Descreva o sintoma e localização; Claude lê o caminho de código relevante e rastreia as causas prováveis. Cole stack traces ou logs se você tiver.",
1458 next: "Coloque um deeplink em seu runbook que abre Claude com este prompt pré-preenchido",
1459 prompt: "os usuários estão vendo {symptom} em {where}. investigue e me diga o que está acontecendo",
1460 slots: {
1461 symptom: "erros 500",
1462 where: "/api/settings"
1463 }
1464 },
1465 "fix-a-build-error": {
1466 title: "Corrigir um erro de build na raiz",
1467 teaches: "Pedir causa raiz e verificação previne patches superficiais que suprimem o erro sem corrigi-lo.",
1468 prompt: "aqui está um erro de build. corrija a causa raiz e verifique se o build é bem-sucedido"
1469 },
1470 "investigate-a-production-incident": {
1471 title: "Investigar um incidente de produção",
1472 teaches: "Liste as fontes de evidência para correlacionar, não os passos a tomar. Claude lê logs, histórico git e configuração juntos para estreitar a causa.",
1473 next: "Conecte seu rastreador de erros ou armazenamento de logs via MCP",
1474 prompt: "{symptom}. verifique os logs, os deploys recentes e as mudanças de configuração, depois me diga a causa mais provável",
1475 slots: {
1476 symptom: "o endpoint de checkout começou a retornar 500s há uma hora"
1477 }
1478 },
1479 "query-logs-in-plain": {
1480 title: "Consultar logs em linguagem simples",
1481 teaches: "Faça a pergunta em vez de escrever o SQL. Claude monta a consulta, a executa contra seus logs conectados e mostra tanto a consulta quanto o resultado para que você possa verificar o que foi executado.",
1482 prompt: "mostre-me todos os {events} para {scope} durante {timeframe}. escreva a consulta, execute-a e me diga o que se destaca",
1483 slots: {
1484 events: "logins com falha",
1485 scope: "o serviço de autenticação",
1486 timeframe: "as últimas 24 horas"
1487 }
1488 },
1489 "diagnose-from-a-console": {
1490 title: "Diagnosticar a partir de uma captura de tela do console",
1491 teaches: "Consoles em nuvem mostram o problema mas não os comandos para corrigi-lo. Claude lê a captura de tela e traduz o dashboard nos comandos kubectl, gcloud ou aws para executar.",
1492 prompt: "aqui está uma captura de tela de {console}. explique passo a passo por que {resource} está falhando e me dê os comandos exatos para corrigir",
1493 slots: {
1494 console: "nosso dashboard do Kubernetes",
1495 resource: "este pod"
1496 }
1497 },
1498 "analyze-a-data-file": {
1499 title: "Analisar um arquivo de dados",
1500 teaches: "Uma pergunta única não precisa de um script único. Aponte para um arquivo em sua pasta de projeto e Claude o lê diretamente, encontra os padrões e escreve a saída onde você pedir.",
1501 next: "Conecte a fonte de dados via MCP em vez de exportar arquivos",
1502 prompt: "leia {file}, resuma os principais padrões e escreva os resultados em {output}",
1503 slots: {
1504 file: "@reports/q1-signups.csv",
1505 output: "uma página HTML com gráficos e depois abra-a no meu navegador"
1506 }
1507 },
1508 "generate-variations-from-performance": {
1509 title: "Gerar variações a partir de dados de desempenho",
1510 teaches: "Declare a restrição no início para que a geração permaneça dentro do limite. Claude lê as métricas, escolhe o que substituir e produz alternativas que se encaixam.",
1511 next: "Conecte a plataforma de anúncios via MCP em vez de exportar um arquivo",
1512 prompt: "leia {file}, encontre os {items} com baixo desempenho e gere {n} novas variações com menos de {limit} caracteres",
1513 slots: {
1514 file: "@ads-performance.csv",
1515 items: "títulos",
1516 n: "20",
1517 limit: "90"
1518 }
1519 },
1520 "turn-a-recurring-task": {
1521 title: "Transformar uma tarefa recorrente em uma skill",
1522 teaches: "Nomeie os passos uma vez; reutilize-os como um comando. Claude escreve uma [skill](/docs/pt/skills) que qualquer pessoa do seu time possa executar.",
1523 prompt: "crie uma skill /{name} para este projeto que {steps}",
1524 slots: {
1525 name: "ship",
1526 steps: "execute o linter e os testes, depois redija uma mensagem de commit"
1527 }
1528 },
1529 "add-a-hook-for": {
1530 title: "Adicionar um hook para comportamento repetido",
1531 teaches: "Hooks tornam um comportamento automático em vez de algo que você tem que se lembrar de pedir. Descreva o gatilho e a ação e Claude escreve a configuração do [hook](/docs/pt/hooks).",
1532 prompt: "escreva um hook que {action} após cada {event}",
1533 slots: {
1534 action: "execute o prettier",
1535 event: "edição em um arquivo .ts ou .tsx"
1536 }
1537 },
1538 "connect-a-tool-with": {
1539 title: "Conectar uma ferramenta com MCP",
1540 teaches: "Conecte a fonte uma vez em vez de colar dados a cada sessão. Após a configuração do [MCP](/docs/pt/mcp), Claude lê da ferramenta diretamente quando você pergunta sobre ela.",
1541 prompt: "conecte {server} via MCP para que você possa ler os {data} dele diretamente",
1542 slots: {
1543 server: "nosso rastreador de erros",
1544 data: "stack traces"
1545 }
1546 },
1547 "capture-what-to-remember": {
1548 title: "Capturar o que lembrar para a próxima vez",
1549 teaches: "Pergunte antes de esquecer. Claude sabe o que teve que descobrir nesta sessão e propõe entradas [CLAUDE.md](/docs/pt/memory) para que a próxima sessão comece com esse contexto.",
1550 prompt: "resuma o que fizemos nesta sessão e sugira o que adicionar ao 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 O que torna esses prompts funcionarem
1558</h2>
1559 14
1560Os prompts acima compartilham alguns padrões. Reconhecê-los ajuda você a adaptar qualquer prompt aqui para sua própria tarefa.15Os prompts acima compartilham alguns padrões. Reconhecê-los ajuda você a adaptar qualquer prompt aqui para sua própria tarefa.
1561 16
1597 52
1598Para mais sobre cada padrão, veja [melhores práticas](/docs/pt/best-practices).53Para mais sobre cada padrão, veja [melhores práticas](/docs/pt/best-practices).
1599 54
1600<h2 id="where-these-come-from">55## De onde vêm esses
1601 De onde vêm esses
1602</h2>
1603 56
1604Esses prompts são baseados em padrões de recursos publicados da Anthropic. Cada card vincula à sua origem:57Esses prompts são baseados em padrões de recursos publicados da Anthropic. Cada card vincula à sua origem:
1605 58
1610 63
1611Para passo a passo em vídeo desses padrões, veja o curso gratuito [Claude Code in Action](https://academy.claude.com/courses/claude-code-in-action) na [Claude Academy](https://academy.claude.com/).64Para passo a passo em vídeo desses padrões, veja o curso gratuito [Claude Code in Action](https://academy.claude.com/courses/claude-code-in-action) na [Claude Academy](https://academy.claude.com/).
1612 65
1613<h2 id="related-resources">66## Recursos relacionados
1614 Recursos relacionados
1615</h2>
1616 67
1617Os prompts nesta página são pontos de partida. Uma vez que um funciona para seu projeto, o próximo passo é torná-lo repetível: salve-o como uma [skill](/docs/pt/skills) para que qualquer pessoa do seu time possa executá-lo como um `/command` e registre as convenções que Claude aprendeu em [CLAUDE.md](/docs/pt/memory) para que cada sessão comece com esse contexto em vez de Claude reaprendê-lo. Para mudanças maiores ou mais arriscadas, [modo de plano](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) mostra a lista de arquivos antes de qualquer edição acontecer.68Os prompts nesta página são pontos de partida. Uma vez que um funciona para seu projeto, o próximo passo é torná-lo repetível: salve-o como uma [skill](/docs/pt/skills) para que qualquer pessoa do seu time possa executá-lo como um `/command` e registre as convenções que Claude aprendeu em [CLAUDE.md](/docs/pt/memory) para que cada sessão comece com esse contexto em vez de Claude reaprendê-lo. Para mudanças maiores ou mais arriscadas, [modo de plano](/docs/pt/permission-modes#analyze-before-you-edit-with-plan-mode) mostra a lista de arquivos antes de qualquer edição acontecer.
1618 69