diff --git a/translated_images/es/.co-op-translator.json b/translated_images/es/.co-op-translator.json
new file mode 100644
index 00000000..c4fd1544
--- /dev/null
+++ b/translated_images/es/.co-op-translator.json
@@ -0,0 +1,368 @@
+{
+ "agent-file-placement-decision-tree.5848403e694d72c9.webp": {
+ "original_hash": "ce88b9c96bf3728ff5f71a560e97623d",
+ "translation_date": "2026-05-21T20:18:53+00:00",
+ "source_file": "04-agents-custom-instructions/images/agent-file-placement-decision-tree.png",
+ "language_code": "es"
+ },
+ "auth-device-flow.7d7da14a860894a6.webp": {
+ "original_hash": "0aff0784cbc9cd963cbc0ede73d75f70",
+ "translation_date": "2026-05-21T20:20:53+00:00",
+ "source_file": "00-quick-start/images/auth-device-flow.png",
+ "language_code": "es"
+ },
+ "browser-extensions-analogy.1c6f6a86678a08a2.webp": {
+ "original_hash": "8cd7fa5f65d0efee0ee75dd4473db650",
+ "translation_date": "2026-05-21T20:16:55+00:00",
+ "source_file": "06-mcp-servers/images/browser-extensions-analogy.png",
+ "language_code": "es"
+ },
+ "carpenter-workflow-steps.e374804b1f3ea428.webp": {
+ "original_hash": "f1ccaf91d5438bda0b702e13e84d1b7a",
+ "translation_date": "2026-05-21T20:14:58+00:00",
+ "source_file": "03-development-workflows/images/carpenter-workflow-steps.png",
+ "language_code": "es"
+ },
+ "chapter-header-bg.17a4b597169dd523.webp": {
+ "original_hash": "9e3c9b35f5f4c9b6caae0aedaff83ae9",
+ "translation_date": "2026-05-21T20:12:40+00:00",
+ "source_file": "images/chapter-header-bg.png",
+ "language_code": "es"
+ },
+ "chapter-header.2f67b2852b4db484.webp": {
+ "original_hash": "ae11d44aa41ec843853b56f14d69c82f",
+ "translation_date": "2026-05-21T20:21:01+00:00",
+ "source_file": "02-context-conversations/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.2fb30f947f359860.webp": {
+ "original_hash": "c859d099d5aec7d20c5d65f6326bd2ef",
+ "translation_date": "2026-05-21T20:17:30+00:00",
+ "source_file": "07-putting-it-together/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.3b3806685205e55b.webp": {
+ "original_hash": "e6d35479ce5d48487738d67eaae8e84e",
+ "translation_date": "2026-05-21T20:19:01+00:00",
+ "source_file": "05-skills/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.54b8fe52abf23bdd.webp": {
+ "original_hash": "76a3fa97ea96ebb9cebf9a424584e7df",
+ "translation_date": "2026-05-21T20:15:24+00:00",
+ "source_file": "01-setup-and-first-steps/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.82fda54e0d79f7cd.webp": {
+ "original_hash": "0c172eba0213f6265b01a9d6d8ba2211",
+ "translation_date": "2026-05-21T20:16:20+00:00",
+ "source_file": "06-mcp-servers/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.e3a5530cf3cd5f19.webp": {
+ "original_hash": "0fb4cecbd9727aa3246c35858cd11e66",
+ "translation_date": "2026-05-21T20:20:16+00:00",
+ "source_file": "00-quick-start/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.f6e4a1e367a5875b.webp": {
+ "original_hash": "00b003624fc19987e2103741bc284af8",
+ "translation_date": "2026-05-21T20:14:05+00:00",
+ "source_file": "03-development-workflows/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "chapter-header.fc472684ca0ab8c7.webp": {
+ "original_hash": "c492562a32b93454300deb6bc7aaf091",
+ "translation_date": "2026-05-21T20:18:16+00:00",
+ "source_file": "04-agents-custom-instructions/images/chapter-header.png",
+ "language_code": "es"
+ },
+ "code-review-swimlane-single.747583865203dc37.webp": {
+ "original_hash": "46dc8b4eadf0f569c23f4befb8e1334a",
+ "translation_date": "2026-05-21T20:15:04+00:00",
+ "source_file": "03-development-workflows/images/code-review-swimlane-single.png",
+ "language_code": "es"
+ },
+ "codebase-understanding.ebbf25ab8a10b4d0.webp": {
+ "original_hash": "fb82efe6dfc6deff163214aeda5db964",
+ "translation_date": "2026-05-21T20:22:06+00:00",
+ "source_file": "02-context-conversations/images/codebase-understanding.png",
+ "language_code": "es"
+ },
+ "colleague-context-analogy.45fd6e9429858f5a.webp": {
+ "original_hash": "c879561cf7b6ec87022d3eeab5ddb3ec",
+ "translation_date": "2026-05-21T20:21:20+00:00",
+ "source_file": "02-context-conversations/images/colleague-context-analogy.png",
+ "language_code": "es"
+ },
+ "combined-workflows.f1e983f2b5f722a8.webp": {
+ "original_hash": "953b1777ada1b45c369db582fae8f1d9",
+ "translation_date": "2026-05-21T20:17:35+00:00",
+ "source_file": "07-putting-it-together/images/combined-workflows.png",
+ "language_code": "es"
+ },
+ "configuring-mcp-servers.1ebc68dfbc0c80eb.webp": {
+ "original_hash": "9e16e65ceecdf98a7cc2dedecc06f2d8",
+ "translation_date": "2026-05-21T20:16:45+00:00",
+ "source_file": "06-mcp-servers/images/configuring-mcp-servers.png",
+ "language_code": "es"
+ },
+ "context-window-visualization.ef5a45c10479cd01.webp": {
+ "original_hash": "c2305c60350131e36873681ea8117d73",
+ "translation_date": "2026-05-21T20:22:15+00:00",
+ "source_file": "02-context-conversations/images/context-window-visualization.png",
+ "language_code": "es"
+ },
+ "copilot-banner.7c3759379c9197c5.webp": {
+ "original_hash": "fb2dc5aee3dc6723697a2a53504260f9",
+ "translation_date": "2026-05-21T20:12:10+00:00",
+ "source_file": "images/copilot-banner.png",
+ "language_code": "es"
+ },
+ "copilot-dev-days.2eb2876202193185.webp": {
+ "original_hash": "9b1dde39a0fe60f695857a3d7e6c8547",
+ "translation_date": "2026-05-21T20:12:37+00:00",
+ "source_file": "images/copilot-dev-days.png",
+ "language_code": "es"
+ },
+ "copilot-trust.2f929113540e0681.webp": {
+ "original_hash": "74ff05e67ca332d53370c1970bc73782",
+ "translation_date": "2026-05-21T20:20:38+00:00",
+ "source_file": "00-quick-start/images/copilot-trust.png",
+ "language_code": "es"
+ },
+ "creating-custom-agents.9f62f7d068f315ca.webp": {
+ "original_hash": "6889fbdcd82f6afd2a1f0f93097e60bf",
+ "translation_date": "2026-05-21T20:18:39+00:00",
+ "source_file": "04-agents-custom-instructions/images/creating-custom-agents.png",
+ "language_code": "es"
+ },
+ "creating-managing-skills.c5db57e703c92a4e.webp": {
+ "original_hash": "eeb6d0103ac737e23dca05881d32c844",
+ "translation_date": "2026-05-21T20:18:53+00:00",
+ "source_file": "05-skills/images/creating-managing-skills.png",
+ "language_code": "es"
+ },
+ "cross-file-intelligence.f617e1ec6a508346.webp": {
+ "original_hash": "7094d0478f03a53b03c0889a57c6e52c",
+ "translation_date": "2026-05-21T20:21:35+00:00",
+ "source_file": "02-context-conversations/images/cross-file-intelligence.png",
+ "language_code": "es"
+ },
+ "debugging-swimlane-single.947de2096181308c.webp": {
+ "original_hash": "c53fc6fb407a6f657737bbbb82409765",
+ "translation_date": "2026-05-21T20:14:15+00:00",
+ "source_file": "03-development-workflows/images/debugging-swimlane-single.png",
+ "language_code": "es"
+ },
+ "essential-basic-context.ee7a0830ba6f2acc.webp": {
+ "original_hash": "143fa66f8e98352e4281e2dc528fef2a",
+ "translation_date": "2026-05-21T20:22:25+00:00",
+ "source_file": "02-context-conversations/images/essential-basic-context.png",
+ "language_code": "es"
+ },
+ "first-copilot-experience.5c080f572dd512c8.webp": {
+ "original_hash": "65f18fcac3328b142041e7cd4b4ab6c9",
+ "translation_date": "2026-05-21T20:15:25+00:00",
+ "source_file": "01-setup-and-first-steps/images/first-copilot-experience.png",
+ "language_code": "es"
+ },
+ "five-workflows-swimlane.a6a200ade99a3162.webp": {
+ "original_hash": "e78bba3128ebca8e359250d66ba151b4",
+ "translation_date": "2026-05-21T20:14:40+00:00",
+ "source_file": "03-development-workflows/images/five-workflows-swimlane.png",
+ "language_code": "es"
+ },
+ "five-workflows.8359efd42280b49a.webp": {
+ "original_hash": "bc72dbaf1f5ea795e7c89176d4fd68e2",
+ "translation_date": "2026-05-21T20:15:15+00:00",
+ "source_file": "03-development-workflows/images/five-workflows.png",
+ "language_code": "es"
+ },
+ "git-integration-swimlane-single.922157607ba6f3bc.webp": {
+ "original_hash": "63f0fa69534384567e46e28c80d77b8c",
+ "translation_date": "2026-05-21T20:14:22+00:00",
+ "source_file": "03-development-workflows/images/git-integration-swimlane-single.png",
+ "language_code": "es"
+ },
+ "github-skills-logo.e8d9b436c03d3f30.webp": {
+ "original_hash": "9ff3dbe4de8f0bd4404ecdbd25feceab",
+ "translation_date": "2026-05-21T20:12:28+00:00",
+ "source_file": "images/github-skills-logo.png",
+ "language_code": "es"
+ },
+ "hiring-specialists-analogy.d3fa98d34dc16a91.webp": {
+ "original_hash": "bb2208a734ed0de7f8ab1c169b6a49ac",
+ "translation_date": "2026-05-21T20:18:38+00:00",
+ "source_file": "04-agents-custom-instructions/images/hiring-specialists-analogy.png",
+ "language_code": "es"
+ },
+ "how-skills-work.421b1a873cddf9d8.webp": {
+ "original_hash": "324d2ea7266294202b5b223324286523",
+ "translation_date": "2026-05-21T20:19:40+00:00",
+ "source_file": "05-skills/images/how-skills-work.png",
+ "language_code": "es"
+ },
+ "integration-pattern.f24deb8659047f23.webp": {
+ "original_hash": "255d5b0ac7745ae151f1319626faa488",
+ "translation_date": "2026-05-21T20:18:08+00:00",
+ "source_file": "07-putting-it-together/images/integration-pattern.png",
+ "language_code": "es"
+ },
+ "interactive-mode.c7468c30dd07ba01.webp": {
+ "original_hash": "710e2c92e99c497b409a24df891ff625",
+ "translation_date": "2026-05-21T20:16:14+00:00",
+ "source_file": "01-setup-and-first-steps/images/interactive-mode.png",
+ "language_code": "es"
+ },
+ "issue-to-pr-workflow.95fa6e72710087c2.webp": {
+ "original_hash": "14918a4187e5c814a25597bd8b56b57e",
+ "translation_date": "2026-05-21T20:17:11+00:00",
+ "source_file": "06-mcp-servers/images/issue-to-pr-workflow.png",
+ "language_code": "es"
+ },
+ "learning-path.ac2da6720e77c316.webp": {
+ "original_hash": "8c79d81f23f7dde3f0acb698a139bb6f",
+ "translation_date": "2026-05-21T20:12:25+00:00",
+ "source_file": "images/learning-path.png",
+ "language_code": "es"
+ },
+ "managing-sharing-skills.fffb79700b2ab444.webp": {
+ "original_hash": "614c9502ee8fb34712e6cd36aaddbedc",
+ "translation_date": "2026-05-21T20:19:39+00:00",
+ "source_file": "05-skills/images/managing-sharing-skills.png",
+ "language_code": "es"
+ },
+ "mockup.fe14d7a5aca14945.webp": {
+ "original_hash": "dd2d6d88e65e9d869554da6b298336cf",
+ "translation_date": "2026-05-21T20:13:48+00:00",
+ "source_file": "images/mockup.png",
+ "language_code": "es"
+ },
+ "modes-and-commands.523ce78e023e0da6.webp": {
+ "original_hash": "00341bffac71159445bc313ed1a9c113",
+ "translation_date": "2026-05-21T20:15:42+00:00",
+ "source_file": "01-setup-and-first-steps/images/modes-and-commands.png",
+ "language_code": "es"
+ },
+ "multi-server-workflow.e83760b2cbe763dd.webp": {
+ "original_hash": "654c129ad56ff48325c105790664fb8d",
+ "translation_date": "2026-05-21T20:16:38+00:00",
+ "source_file": "06-mcp-servers/images/multi-server-workflow.png",
+ "language_code": "es"
+ },
+ "optional-going-deeper.15101027ffcbf119.webp": {
+ "original_hash": "b709a70015a36e616d13d84b191cec8a",
+ "translation_date": "2026-05-21T20:21:35+00:00",
+ "source_file": "02-context-conversations/images/optional-going-deeper.png",
+ "language_code": "es"
+ },
+ "orchestra-analogy.7650ad8e2cc5fcb1.webp": {
+ "original_hash": "ad1d0d18ef7c0f5cef7b7f4b5f1420e9",
+ "translation_date": "2026-05-21T20:17:52+00:00",
+ "source_file": "07-putting-it-together/images/orchestra-analogy.png",
+ "language_code": "es"
+ },
+ "ordering-food-analogy.5f86c2e0b660bad8.webp": {
+ "original_hash": "31ccedda9e34732dc710b04e5d92440c",
+ "translation_date": "2026-05-21T20:15:42+00:00",
+ "source_file": "01-setup-and-first-steps/images/ordering-food-analogy.png",
+ "language_code": "es"
+ },
+ "plan-mode.ecccade3e78acf86.webp": {
+ "original_hash": "1018cb44df06735028d197ed6dfb18a2",
+ "translation_date": "2026-05-21T20:15:53+00:00",
+ "source_file": "01-setup-and-first-steps/images/plan-mode.png",
+ "language_code": "es"
+ },
+ "power-tools-analogy.f274c89efa06ae1b.webp": {
+ "original_hash": "20b8409665af15c8ce162c22319bc042",
+ "translation_date": "2026-05-21T20:20:09+00:00",
+ "source_file": "05-skills/images/power-tools-analogy.png",
+ "language_code": "es"
+ },
+ "practice.8d3cf2353056bdf3.webp": {
+ "original_hash": "53de278a98a50827d7698a1ed88ebd28",
+ "translation_date": "2026-05-21T20:12:28+00:00",
+ "source_file": "images/practice.png",
+ "language_code": "es"
+ },
+ "programmatic-mode.0f849d5b7c288dc3.webp": {
+ "original_hash": "5b4eb0a5ce59dadb6cdc3f6a0188ab59",
+ "translation_date": "2026-05-21T20:16:03+00:00",
+ "source_file": "01-setup-and-first-steps/images/programmatic-mode.png",
+ "language_code": "es"
+ },
+ "qr.d6fbc8daa6f79f2e.webp": {
+ "original_hash": "6552fe56f0b3d172add19e33f0c80126",
+ "translation_date": "2026-05-21T20:12:14+00:00",
+ "source_file": "images/qr.png",
+ "language_code": "es"
+ },
+ "quick-reference-header.d2276091372245dd.webp": {
+ "original_hash": "065feb773bd998af6018d455ac27ecf1",
+ "translation_date": "2026-05-21T20:13:58+00:00",
+ "source_file": "images/quick-reference-header.png",
+ "language_code": "es"
+ },
+ "quick-start-mcp.526e273c9e898021.webp": {
+ "original_hash": "e508f2942556059db4734f7657ada914",
+ "translation_date": "2026-05-21T20:16:25+00:00",
+ "source_file": "06-mcp-servers/images/quick-start-mcp.png",
+ "language_code": "es"
+ },
+ "refactoring-swimlane-single.4bc93ce30952b64f.webp": {
+ "original_hash": "1f2ed7bba6c0cced04b660fab0a00cd7",
+ "translation_date": "2026-05-21T20:15:11+00:00",
+ "source_file": "03-development-workflows/images/refactoring-swimlane-single.png",
+ "language_code": "es"
+ },
+ "screenshot.e7a5ad659e364568.webp": {
+ "original_hash": "31ccedda9e34732dc710b04e5d92440c",
+ "translation_date": "2026-05-21T20:13:00+00:00",
+ "source_file": "images/screenshot.png",
+ "language_code": "es"
+ },
+ "session-persistence-timeline.7d63a4db4626abb8.webp": {
+ "original_hash": "b55b9d9b4e2312a5ba2c58a99f7ed35b",
+ "translation_date": "2026-05-21T20:21:55+00:00",
+ "source_file": "02-context-conversations/images/session-persistence-timeline.png",
+ "language_code": "es"
+ },
+ "skill-auto-discovery-flow.2293cb990e2731fe.webp": {
+ "original_hash": "d37aa3a4382a9e2b9107e4d1b4d96d84",
+ "translation_date": "2026-05-21T20:19:28+00:00",
+ "source_file": "05-skills/images/skill-auto-discovery-flow.png",
+ "language_code": "es"
+ },
+ "skills-agents-mcp-comparison.61ce1d50c751c78f.webp": {
+ "original_hash": "1bdf646614c20edb879e4aff8784441e",
+ "translation_date": "2026-05-21T20:19:58+00:00",
+ "source_file": "05-skills/images/skills-agents-mcp-comparison.png",
+ "language_code": "es"
+ },
+ "specialized-workflows.71d3a969ae402ee4.webp": {
+ "original_hash": "bbb3a512e8b3e845e76947254c7cb518",
+ "translation_date": "2026-05-21T20:14:09+00:00",
+ "source_file": "03-development-workflows/images/specialized-workflows.png",
+ "language_code": "es"
+ },
+ "test-gen-swimlane-single.999106fc730e0085.webp": {
+ "original_hash": "0a81cf5e319225b3cc16711044aeebef",
+ "translation_date": "2026-05-21T20:14:47+00:00",
+ "source_file": "03-development-workflows/images/test-gen-swimlane-single.png",
+ "language_code": "es"
+ },
+ "using-agents.1378e926cd64d336.webp": {
+ "original_hash": "8942e4cdeb86359fb66b2b76fd3cb181",
+ "translation_date": "2026-05-21T20:18:20+00:00",
+ "source_file": "04-agents-custom-instructions/images/using-agents.png",
+ "language_code": "es"
+ },
+ "using-mcp-servers.dbc3c603f18e8d98.webp": {
+ "original_hash": "a0ebd353ad2fe04046303a6f2bcc4c82",
+ "translation_date": "2026-05-21T20:17:22+00:00",
+ "source_file": "06-mcp-servers/images/using-mcp-servers.png",
+ "language_code": "es"
+ }
+}
\ No newline at end of file
diff --git a/translated_images/es/agent-file-placement-decision-tree.5848403e694d72c9.webp b/translated_images/es/agent-file-placement-decision-tree.5848403e694d72c9.webp
new file mode 100644
index 00000000..641eff47
Binary files /dev/null and b/translated_images/es/agent-file-placement-decision-tree.5848403e694d72c9.webp differ
diff --git a/translated_images/es/auth-device-flow.7d7da14a860894a6.webp b/translated_images/es/auth-device-flow.7d7da14a860894a6.webp
new file mode 100644
index 00000000..09acdbc6
Binary files /dev/null and b/translated_images/es/auth-device-flow.7d7da14a860894a6.webp differ
diff --git a/translated_images/es/browser-extensions-analogy.1c6f6a86678a08a2.webp b/translated_images/es/browser-extensions-analogy.1c6f6a86678a08a2.webp
new file mode 100644
index 00000000..e1cd8924
Binary files /dev/null and b/translated_images/es/browser-extensions-analogy.1c6f6a86678a08a2.webp differ
diff --git a/translated_images/es/carpenter-workflow-steps.e374804b1f3ea428.webp b/translated_images/es/carpenter-workflow-steps.e374804b1f3ea428.webp
new file mode 100644
index 00000000..202e03f9
Binary files /dev/null and b/translated_images/es/carpenter-workflow-steps.e374804b1f3ea428.webp differ
diff --git a/translated_images/es/chapter-header-bg.17a4b597169dd523.webp b/translated_images/es/chapter-header-bg.17a4b597169dd523.webp
new file mode 100644
index 00000000..84f3e96a
Binary files /dev/null and b/translated_images/es/chapter-header-bg.17a4b597169dd523.webp differ
diff --git a/translated_images/es/chapter-header.2f67b2852b4db484.webp b/translated_images/es/chapter-header.2f67b2852b4db484.webp
new file mode 100644
index 00000000..b5a89cbf
Binary files /dev/null and b/translated_images/es/chapter-header.2f67b2852b4db484.webp differ
diff --git a/translated_images/es/chapter-header.2fb30f947f359860.webp b/translated_images/es/chapter-header.2fb30f947f359860.webp
new file mode 100644
index 00000000..d63a7423
Binary files /dev/null and b/translated_images/es/chapter-header.2fb30f947f359860.webp differ
diff --git a/translated_images/es/chapter-header.3b3806685205e55b.webp b/translated_images/es/chapter-header.3b3806685205e55b.webp
new file mode 100644
index 00000000..f6564780
Binary files /dev/null and b/translated_images/es/chapter-header.3b3806685205e55b.webp differ
diff --git a/translated_images/es/chapter-header.54b8fe52abf23bdd.webp b/translated_images/es/chapter-header.54b8fe52abf23bdd.webp
new file mode 100644
index 00000000..3aebea35
Binary files /dev/null and b/translated_images/es/chapter-header.54b8fe52abf23bdd.webp differ
diff --git a/translated_images/es/chapter-header.82fda54e0d79f7cd.webp b/translated_images/es/chapter-header.82fda54e0d79f7cd.webp
new file mode 100644
index 00000000..caa65cdb
Binary files /dev/null and b/translated_images/es/chapter-header.82fda54e0d79f7cd.webp differ
diff --git a/translated_images/es/chapter-header.e3a5530cf3cd5f19.webp b/translated_images/es/chapter-header.e3a5530cf3cd5f19.webp
new file mode 100644
index 00000000..280ceadf
Binary files /dev/null and b/translated_images/es/chapter-header.e3a5530cf3cd5f19.webp differ
diff --git a/translated_images/es/chapter-header.f6e4a1e367a5875b.webp b/translated_images/es/chapter-header.f6e4a1e367a5875b.webp
new file mode 100644
index 00000000..1fd3f251
Binary files /dev/null and b/translated_images/es/chapter-header.f6e4a1e367a5875b.webp differ
diff --git a/translated_images/es/chapter-header.fc472684ca0ab8c7.webp b/translated_images/es/chapter-header.fc472684ca0ab8c7.webp
new file mode 100644
index 00000000..a96e6e83
Binary files /dev/null and b/translated_images/es/chapter-header.fc472684ca0ab8c7.webp differ
diff --git a/translated_images/es/code-review-swimlane-single.747583865203dc37.webp b/translated_images/es/code-review-swimlane-single.747583865203dc37.webp
new file mode 100644
index 00000000..ef55f434
Binary files /dev/null and b/translated_images/es/code-review-swimlane-single.747583865203dc37.webp differ
diff --git a/translated_images/es/codebase-understanding.ebbf25ab8a10b4d0.webp b/translated_images/es/codebase-understanding.ebbf25ab8a10b4d0.webp
new file mode 100644
index 00000000..569ab012
Binary files /dev/null and b/translated_images/es/codebase-understanding.ebbf25ab8a10b4d0.webp differ
diff --git a/translated_images/es/colleague-context-analogy.45fd6e9429858f5a.webp b/translated_images/es/colleague-context-analogy.45fd6e9429858f5a.webp
new file mode 100644
index 00000000..a964c61c
Binary files /dev/null and b/translated_images/es/colleague-context-analogy.45fd6e9429858f5a.webp differ
diff --git a/translated_images/es/combined-workflows.f1e983f2b5f722a8.webp b/translated_images/es/combined-workflows.f1e983f2b5f722a8.webp
new file mode 100644
index 00000000..275774b8
Binary files /dev/null and b/translated_images/es/combined-workflows.f1e983f2b5f722a8.webp differ
diff --git a/translated_images/es/configuring-mcp-servers.1ebc68dfbc0c80eb.webp b/translated_images/es/configuring-mcp-servers.1ebc68dfbc0c80eb.webp
new file mode 100644
index 00000000..e5f1e053
Binary files /dev/null and b/translated_images/es/configuring-mcp-servers.1ebc68dfbc0c80eb.webp differ
diff --git a/translated_images/es/context-window-visualization.ef5a45c10479cd01.webp b/translated_images/es/context-window-visualization.ef5a45c10479cd01.webp
new file mode 100644
index 00000000..11615135
Binary files /dev/null and b/translated_images/es/context-window-visualization.ef5a45c10479cd01.webp differ
diff --git a/translated_images/es/copilot-banner.7c3759379c9197c5.webp b/translated_images/es/copilot-banner.7c3759379c9197c5.webp
new file mode 100644
index 00000000..7bcc3877
Binary files /dev/null and b/translated_images/es/copilot-banner.7c3759379c9197c5.webp differ
diff --git a/translated_images/es/copilot-dev-days.2eb2876202193185.webp b/translated_images/es/copilot-dev-days.2eb2876202193185.webp
new file mode 100644
index 00000000..80e4f84d
Binary files /dev/null and b/translated_images/es/copilot-dev-days.2eb2876202193185.webp differ
diff --git a/translated_images/es/copilot-trust.2f929113540e0681.webp b/translated_images/es/copilot-trust.2f929113540e0681.webp
new file mode 100644
index 00000000..a63ebb3c
Binary files /dev/null and b/translated_images/es/copilot-trust.2f929113540e0681.webp differ
diff --git a/translated_images/es/creating-custom-agents.9f62f7d068f315ca.webp b/translated_images/es/creating-custom-agents.9f62f7d068f315ca.webp
new file mode 100644
index 00000000..3b0d2245
Binary files /dev/null and b/translated_images/es/creating-custom-agents.9f62f7d068f315ca.webp differ
diff --git a/translated_images/es/creating-managing-skills.c5db57e703c92a4e.webp b/translated_images/es/creating-managing-skills.c5db57e703c92a4e.webp
new file mode 100644
index 00000000..f3132a71
Binary files /dev/null and b/translated_images/es/creating-managing-skills.c5db57e703c92a4e.webp differ
diff --git a/translated_images/es/cross-file-intelligence.f617e1ec6a508346.webp b/translated_images/es/cross-file-intelligence.f617e1ec6a508346.webp
new file mode 100644
index 00000000..958c55d4
Binary files /dev/null and b/translated_images/es/cross-file-intelligence.f617e1ec6a508346.webp differ
diff --git a/translated_images/es/debugging-swimlane-single.947de2096181308c.webp b/translated_images/es/debugging-swimlane-single.947de2096181308c.webp
new file mode 100644
index 00000000..00da6fc9
Binary files /dev/null and b/translated_images/es/debugging-swimlane-single.947de2096181308c.webp differ
diff --git a/translated_images/es/essential-basic-context.ee7a0830ba6f2acc.webp b/translated_images/es/essential-basic-context.ee7a0830ba6f2acc.webp
new file mode 100644
index 00000000..9a2a8c4e
Binary files /dev/null and b/translated_images/es/essential-basic-context.ee7a0830ba6f2acc.webp differ
diff --git a/translated_images/es/first-copilot-experience.5c080f572dd512c8.webp b/translated_images/es/first-copilot-experience.5c080f572dd512c8.webp
new file mode 100644
index 00000000..7c789562
Binary files /dev/null and b/translated_images/es/first-copilot-experience.5c080f572dd512c8.webp differ
diff --git a/translated_images/es/five-workflows-swimlane.a6a200ade99a3162.webp b/translated_images/es/five-workflows-swimlane.a6a200ade99a3162.webp
new file mode 100644
index 00000000..af76723c
Binary files /dev/null and b/translated_images/es/five-workflows-swimlane.a6a200ade99a3162.webp differ
diff --git a/translated_images/es/five-workflows.8359efd42280b49a.webp b/translated_images/es/five-workflows.8359efd42280b49a.webp
new file mode 100644
index 00000000..439c80e6
Binary files /dev/null and b/translated_images/es/five-workflows.8359efd42280b49a.webp differ
diff --git a/translated_images/es/git-integration-swimlane-single.922157607ba6f3bc.webp b/translated_images/es/git-integration-swimlane-single.922157607ba6f3bc.webp
new file mode 100644
index 00000000..859ac538
Binary files /dev/null and b/translated_images/es/git-integration-swimlane-single.922157607ba6f3bc.webp differ
diff --git a/translated_images/es/github-skills-logo.e8d9b436c03d3f30.webp b/translated_images/es/github-skills-logo.e8d9b436c03d3f30.webp
new file mode 100644
index 00000000..ac9663ac
Binary files /dev/null and b/translated_images/es/github-skills-logo.e8d9b436c03d3f30.webp differ
diff --git a/translated_images/es/hiring-specialists-analogy.d3fa98d34dc16a91.webp b/translated_images/es/hiring-specialists-analogy.d3fa98d34dc16a91.webp
new file mode 100644
index 00000000..58f00546
Binary files /dev/null and b/translated_images/es/hiring-specialists-analogy.d3fa98d34dc16a91.webp differ
diff --git a/translated_images/es/how-skills-work.421b1a873cddf9d8.webp b/translated_images/es/how-skills-work.421b1a873cddf9d8.webp
new file mode 100644
index 00000000..5e4e5c2d
Binary files /dev/null and b/translated_images/es/how-skills-work.421b1a873cddf9d8.webp differ
diff --git a/translated_images/es/integration-pattern.f24deb8659047f23.webp b/translated_images/es/integration-pattern.f24deb8659047f23.webp
new file mode 100644
index 00000000..1a043438
Binary files /dev/null and b/translated_images/es/integration-pattern.f24deb8659047f23.webp differ
diff --git a/translated_images/es/interactive-mode.c7468c30dd07ba01.webp b/translated_images/es/interactive-mode.c7468c30dd07ba01.webp
new file mode 100644
index 00000000..29cc76f8
Binary files /dev/null and b/translated_images/es/interactive-mode.c7468c30dd07ba01.webp differ
diff --git a/translated_images/es/issue-to-pr-workflow.95fa6e72710087c2.webp b/translated_images/es/issue-to-pr-workflow.95fa6e72710087c2.webp
new file mode 100644
index 00000000..08ed5646
Binary files /dev/null and b/translated_images/es/issue-to-pr-workflow.95fa6e72710087c2.webp differ
diff --git a/translated_images/es/learning-path.ac2da6720e77c316.webp b/translated_images/es/learning-path.ac2da6720e77c316.webp
new file mode 100644
index 00000000..c67a4426
Binary files /dev/null and b/translated_images/es/learning-path.ac2da6720e77c316.webp differ
diff --git a/translated_images/es/managing-sharing-skills.fffb79700b2ab444.webp b/translated_images/es/managing-sharing-skills.fffb79700b2ab444.webp
new file mode 100644
index 00000000..902a5933
Binary files /dev/null and b/translated_images/es/managing-sharing-skills.fffb79700b2ab444.webp differ
diff --git a/translated_images/es/mockup.fe14d7a5aca14945.webp b/translated_images/es/mockup.fe14d7a5aca14945.webp
new file mode 100644
index 00000000..8defd2a7
Binary files /dev/null and b/translated_images/es/mockup.fe14d7a5aca14945.webp differ
diff --git a/translated_images/es/modes-and-commands.523ce78e023e0da6.webp b/translated_images/es/modes-and-commands.523ce78e023e0da6.webp
new file mode 100644
index 00000000..3ba64ff3
Binary files /dev/null and b/translated_images/es/modes-and-commands.523ce78e023e0da6.webp differ
diff --git a/translated_images/es/multi-server-workflow.e83760b2cbe763dd.webp b/translated_images/es/multi-server-workflow.e83760b2cbe763dd.webp
new file mode 100644
index 00000000..d5bb9512
Binary files /dev/null and b/translated_images/es/multi-server-workflow.e83760b2cbe763dd.webp differ
diff --git a/translated_images/es/optional-going-deeper.15101027ffcbf119.webp b/translated_images/es/optional-going-deeper.15101027ffcbf119.webp
new file mode 100644
index 00000000..90fbd6b6
Binary files /dev/null and b/translated_images/es/optional-going-deeper.15101027ffcbf119.webp differ
diff --git a/translated_images/es/orchestra-analogy.7650ad8e2cc5fcb1.webp b/translated_images/es/orchestra-analogy.7650ad8e2cc5fcb1.webp
new file mode 100644
index 00000000..c29fa86e
Binary files /dev/null and b/translated_images/es/orchestra-analogy.7650ad8e2cc5fcb1.webp differ
diff --git a/translated_images/es/ordering-food-analogy.5f86c2e0b660bad8.webp b/translated_images/es/ordering-food-analogy.5f86c2e0b660bad8.webp
new file mode 100644
index 00000000..1d22ed84
Binary files /dev/null and b/translated_images/es/ordering-food-analogy.5f86c2e0b660bad8.webp differ
diff --git a/translated_images/es/plan-mode.ecccade3e78acf86.webp b/translated_images/es/plan-mode.ecccade3e78acf86.webp
new file mode 100644
index 00000000..5182abd5
Binary files /dev/null and b/translated_images/es/plan-mode.ecccade3e78acf86.webp differ
diff --git a/translated_images/es/power-tools-analogy.f274c89efa06ae1b.webp b/translated_images/es/power-tools-analogy.f274c89efa06ae1b.webp
new file mode 100644
index 00000000..8eeb5549
Binary files /dev/null and b/translated_images/es/power-tools-analogy.f274c89efa06ae1b.webp differ
diff --git a/translated_images/es/practice.8d3cf2353056bdf3.webp b/translated_images/es/practice.8d3cf2353056bdf3.webp
new file mode 100644
index 00000000..0bd121ab
Binary files /dev/null and b/translated_images/es/practice.8d3cf2353056bdf3.webp differ
diff --git a/translated_images/es/programmatic-mode.0f849d5b7c288dc3.webp b/translated_images/es/programmatic-mode.0f849d5b7c288dc3.webp
new file mode 100644
index 00000000..67cf521b
Binary files /dev/null and b/translated_images/es/programmatic-mode.0f849d5b7c288dc3.webp differ
diff --git a/translated_images/es/qr.d6fbc8daa6f79f2e.webp b/translated_images/es/qr.d6fbc8daa6f79f2e.webp
new file mode 100644
index 00000000..53a57266
Binary files /dev/null and b/translated_images/es/qr.d6fbc8daa6f79f2e.webp differ
diff --git a/translated_images/es/quick-reference-header.d2276091372245dd.webp b/translated_images/es/quick-reference-header.d2276091372245dd.webp
new file mode 100644
index 00000000..04269de9
Binary files /dev/null and b/translated_images/es/quick-reference-header.d2276091372245dd.webp differ
diff --git a/translated_images/es/quick-start-mcp.526e273c9e898021.webp b/translated_images/es/quick-start-mcp.526e273c9e898021.webp
new file mode 100644
index 00000000..43d54d8c
Binary files /dev/null and b/translated_images/es/quick-start-mcp.526e273c9e898021.webp differ
diff --git a/translated_images/es/refactoring-swimlane-single.4bc93ce30952b64f.webp b/translated_images/es/refactoring-swimlane-single.4bc93ce30952b64f.webp
new file mode 100644
index 00000000..2ba7bce8
Binary files /dev/null and b/translated_images/es/refactoring-swimlane-single.4bc93ce30952b64f.webp differ
diff --git a/translated_images/es/screenshot.e7a5ad659e364568.webp b/translated_images/es/screenshot.e7a5ad659e364568.webp
new file mode 100644
index 00000000..b815397f
Binary files /dev/null and b/translated_images/es/screenshot.e7a5ad659e364568.webp differ
diff --git a/translated_images/es/session-persistence-timeline.7d63a4db4626abb8.webp b/translated_images/es/session-persistence-timeline.7d63a4db4626abb8.webp
new file mode 100644
index 00000000..e879f089
Binary files /dev/null and b/translated_images/es/session-persistence-timeline.7d63a4db4626abb8.webp differ
diff --git a/translated_images/es/skill-auto-discovery-flow.2293cb990e2731fe.webp b/translated_images/es/skill-auto-discovery-flow.2293cb990e2731fe.webp
new file mode 100644
index 00000000..742980c8
Binary files /dev/null and b/translated_images/es/skill-auto-discovery-flow.2293cb990e2731fe.webp differ
diff --git a/translated_images/es/skills-agents-mcp-comparison.61ce1d50c751c78f.webp b/translated_images/es/skills-agents-mcp-comparison.61ce1d50c751c78f.webp
new file mode 100644
index 00000000..9ccc5fea
Binary files /dev/null and b/translated_images/es/skills-agents-mcp-comparison.61ce1d50c751c78f.webp differ
diff --git a/translated_images/es/specialized-workflows.71d3a969ae402ee4.webp b/translated_images/es/specialized-workflows.71d3a969ae402ee4.webp
new file mode 100644
index 00000000..01788b51
Binary files /dev/null and b/translated_images/es/specialized-workflows.71d3a969ae402ee4.webp differ
diff --git a/translated_images/es/test-gen-swimlane-single.999106fc730e0085.webp b/translated_images/es/test-gen-swimlane-single.999106fc730e0085.webp
new file mode 100644
index 00000000..1394823b
Binary files /dev/null and b/translated_images/es/test-gen-swimlane-single.999106fc730e0085.webp differ
diff --git a/translated_images/es/using-agents.1378e926cd64d336.webp b/translated_images/es/using-agents.1378e926cd64d336.webp
new file mode 100644
index 00000000..b4876232
Binary files /dev/null and b/translated_images/es/using-agents.1378e926cd64d336.webp differ
diff --git a/translated_images/es/using-mcp-servers.dbc3c603f18e8d98.webp b/translated_images/es/using-mcp-servers.dbc3c603f18e8d98.webp
new file mode 100644
index 00000000..9d0b926b
Binary files /dev/null and b/translated_images/es/using-mcp-servers.dbc3c603f18e8d98.webp differ
diff --git a/translations/es/.co-op-translator.json b/translations/es/.co-op-translator.json
new file mode 100644
index 00000000..f553338c
--- /dev/null
+++ b/translations/es/.co-op-translator.json
@@ -0,0 +1,206 @@
+{
+ "00-quick-start/README.md": {
+ "original_hash": "e0dd3329a3fc2e9fc01ef0a8b09edce6",
+ "translation_date": "2026-05-21T19:59:16+00:00",
+ "source_file": "00-quick-start/README.md",
+ "language_code": "es"
+ },
+ "01-setup-and-first-steps/README.md": {
+ "original_hash": "8cf0aca7814c6dd6bb8802cbeb204486",
+ "translation_date": "2026-05-21T19:40:14+00:00",
+ "source_file": "01-setup-and-first-steps/README.md",
+ "language_code": "es"
+ },
+ "02-context-conversations/README.md": {
+ "original_hash": "fdbbee0b5d09eaa0bed117fcda8eba6a",
+ "translation_date": "2026-05-21T20:03:59+00:00",
+ "source_file": "02-context-conversations/README.md",
+ "language_code": "es"
+ },
+ "03-development-workflows/README.md": {
+ "original_hash": "db2da31d6167b60ec07d6fc5de5d8fa5",
+ "translation_date": "2026-05-21T19:37:02+00:00",
+ "source_file": "03-development-workflows/README.md",
+ "language_code": "es"
+ },
+ "04-agents-custom-instructions/README.md": {
+ "original_hash": "00cb268f09c4933f354ed31e6d0826b5",
+ "translation_date": "2026-05-21T19:52:37+00:00",
+ "source_file": "04-agents-custom-instructions/README.md",
+ "language_code": "es"
+ },
+ "05-skills/README.md": {
+ "original_hash": "c2099ffe14f1365d58744b10ea68a97a",
+ "translation_date": "2026-05-21T19:56:06+00:00",
+ "source_file": "05-skills/README.md",
+ "language_code": "es"
+ },
+ "06-mcp-servers/README.md": {
+ "original_hash": "125b67765a6c47fb6075fc3cbb598c14",
+ "translation_date": "2026-05-21T19:45:59+00:00",
+ "source_file": "06-mcp-servers/README.md",
+ "language_code": "es"
+ },
+ "06-mcp-servers/mcp-custom-server.md": {
+ "original_hash": "66a03633ce6e5d5a13a8b0ac37c50bed",
+ "translation_date": "2026-05-21T19:40:53+00:00",
+ "source_file": "06-mcp-servers/mcp-custom-server.md",
+ "language_code": "es"
+ },
+ "07-putting-it-together/README.md": {
+ "original_hash": "1ec6cba4dbae210fa231241dbbaf7f93",
+ "translation_date": "2026-05-21T19:49:08+00:00",
+ "source_file": "07-putting-it-together/README.md",
+ "language_code": "es"
+ },
+ "AGENTS.md": {
+ "original_hash": "ee92ae79ac3ebc6ad521a1ee273fae41",
+ "translation_date": "2026-05-21T19:27:01+00:00",
+ "source_file": "AGENTS.md",
+ "language_code": "es"
+ },
+ "CODE_OF_CONDUCT.md": {
+ "original_hash": "8b6516f8c2a7f71d51c047f2cf67da7b",
+ "translation_date": "2026-05-21T19:29:18+00:00",
+ "source_file": "CODE_OF_CONDUCT.md",
+ "language_code": "es"
+ },
+ "CONTRIBUTING.md": {
+ "original_hash": "b42221679e9ecaa79509af1242eaab75",
+ "translation_date": "2026-05-21T19:27:58+00:00",
+ "source_file": "CONTRIBUTING.md",
+ "language_code": "es"
+ },
+ "GLOSSARY.md": {
+ "original_hash": "7b5066217ca32c32ec9f7a615208fa94",
+ "translation_date": "2026-05-21T19:30:21+00:00",
+ "source_file": "GLOSSARY.md",
+ "language_code": "es"
+ },
+ "README.md": {
+ "original_hash": "39fde33edd0588f68326e46abc07b12a",
+ "translation_date": "2026-05-21T19:31:17+00:00",
+ "source_file": "README.md",
+ "language_code": "es"
+ },
+ "SECURITY.md": {
+ "original_hash": "c540a9732501726bf7fff2f58b143ac3",
+ "translation_date": "2026-05-21T19:27:35+00:00",
+ "source_file": "SECURITY.md",
+ "language_code": "es"
+ },
+ "SUPPORT.md": {
+ "original_hash": "3999b38d93fe3d9a90e6ffd908f14cbf",
+ "translation_date": "2026-05-21T19:27:15+00:00",
+ "source_file": "SUPPORT.md",
+ "language_code": "es"
+ },
+ "appendices/README.md": {
+ "original_hash": "9300ff0ed514c1d9a5c58ce75157584e",
+ "translation_date": "2026-05-21T19:58:03+00:00",
+ "source_file": "appendices/README.md",
+ "language_code": "es"
+ },
+ "appendices/additional-context.md": {
+ "original_hash": "7e821d4c01a9b9ae2bbaa8e1379058bf",
+ "translation_date": "2026-05-21T19:57:44+00:00",
+ "source_file": "appendices/additional-context.md",
+ "language_code": "es"
+ },
+ "appendices/ci-cd-integration.md": {
+ "original_hash": "c0a821c1c1354f6cadcbcd18d17e2cf5",
+ "translation_date": "2026-05-21T19:56:48+00:00",
+ "source_file": "appendices/ci-cd-integration.md",
+ "language_code": "es"
+ },
+ "samples/agents/README.md": {
+ "original_hash": "9de7cf939dcf741b2982297ad5cf6581",
+ "translation_date": "2026-05-21T20:09:16+00:00",
+ "source_file": "samples/agents/README.md",
+ "language_code": "es"
+ },
+ "samples/agents/hello-world.agent.md": {
+ "original_hash": "db3c04f3976846c58ddf05144e624b09",
+ "translation_date": "2026-05-21T20:07:41+00:00",
+ "source_file": "samples/agents/hello-world.agent.md",
+ "language_code": "es"
+ },
+ "samples/agents/pytest-helper.agent.md": {
+ "original_hash": "3cfa8198900378848104d6e970aafbf4",
+ "translation_date": "2026-05-21T20:08:11+00:00",
+ "source_file": "samples/agents/pytest-helper.agent.md",
+ "language_code": "es"
+ },
+ "samples/agents/python-reviewer.agent.md": {
+ "original_hash": "f7bd2c6f349fa270519c6d186b8e77f3",
+ "translation_date": "2026-05-21T20:07:27+00:00",
+ "source_file": "samples/agents/python-reviewer.agent.md",
+ "language_code": "es"
+ },
+ "samples/book-app-buggy/README.md": {
+ "original_hash": "969121831d9dba9314f1fd75f29ebfe0",
+ "translation_date": "2026-05-21T20:05:25+00:00",
+ "source_file": "samples/book-app-buggy/README.md",
+ "language_code": "es"
+ },
+ "samples/book-app-project-cs/README.md": {
+ "original_hash": "99c4f97ce8c39547e0a0fede1ab2d400",
+ "translation_date": "2026-05-21T20:04:18+00:00",
+ "source_file": "samples/book-app-project-cs/README.md",
+ "language_code": "es"
+ },
+ "samples/book-app-project-js/README.md": {
+ "original_hash": "98bb7fe8a2cf1d73c31e3911683b8476",
+ "translation_date": "2026-05-21T20:06:57+00:00",
+ "source_file": "samples/book-app-project-js/README.md",
+ "language_code": "es"
+ },
+ "samples/book-app-project/README.md": {
+ "original_hash": "8e014705b00d769d7b1d5954b890fc16",
+ "translation_date": "2026-05-21T20:04:38+00:00",
+ "source_file": "samples/book-app-project/README.md",
+ "language_code": "es"
+ },
+ "samples/buggy-code/README.md": {
+ "original_hash": "15b20ed65bd5136c5ce1e719f88d5d05",
+ "translation_date": "2026-05-21T20:09:56+00:00",
+ "source_file": "samples/buggy-code/README.md",
+ "language_code": "es"
+ },
+ "samples/skills/README.md": {
+ "original_hash": "668a73830bd833ecaf8303615c53342a",
+ "translation_date": "2026-05-21T20:06:23+00:00",
+ "source_file": "samples/skills/README.md",
+ "language_code": "es"
+ },
+ "samples/skills/code-checklist/SKILL.md": {
+ "original_hash": "fa98bdb133a0a3494587b9e1cdb46d22",
+ "translation_date": "2026-05-21T20:11:19+00:00",
+ "source_file": "samples/skills/code-checklist/SKILL.md",
+ "language_code": "es"
+ },
+ "samples/skills/commit-message/SKILL.md": {
+ "original_hash": "b7d664a594d498d95b1d79751f508b3f",
+ "translation_date": "2026-05-21T20:11:58+00:00",
+ "source_file": "samples/skills/commit-message/SKILL.md",
+ "language_code": "es"
+ },
+ "samples/skills/hello-world/SKILL.md": {
+ "original_hash": "37e425f6e5b4a3a0147ff6c4e1f49903",
+ "translation_date": "2026-05-21T20:10:20+00:00",
+ "source_file": "samples/skills/hello-world/SKILL.md",
+ "language_code": "es"
+ },
+ "samples/skills/pytest-gen/SKILL.md": {
+ "original_hash": "ed0dc993c3006abb96495ca309bd9a1f",
+ "translation_date": "2026-05-21T20:10:54+00:00",
+ "source_file": "samples/skills/pytest-gen/SKILL.md",
+ "language_code": "es"
+ },
+ "samples/src/README.md": {
+ "original_hash": "07d30c7bddf8817f7754183573ac9303",
+ "translation_date": "2026-05-21T20:04:53+00:00",
+ "source_file": "samples/src/README.md",
+ "language_code": "es"
+ }
+}
\ No newline at end of file
diff --git a/translations/es/00-quick-start/README.md b/translations/es/00-quick-start/README.md
new file mode 100644
index 00000000..4a289052
--- /dev/null
+++ b/translations/es/00-quick-start/README.md
@@ -0,0 +1,297 @@
+
+
+¡Bienvenido! En este capítulo, instalarás GitHub Copilot CLI (Interfaz de línea de comandos), iniciarás sesión con tu cuenta de GitHub y verificarás que todo funciona. Este es un capítulo de configuración rápida. ¡Una vez que estés en marcha, las demos reales comienzan en el Capítulo 01!
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, habrás:
+
+- Instalado GitHub Copilot CLI
+- Iniciado sesión con tu cuenta de GitHub
+- Verificado que funciona con una prueba simple
+
+> ⏱️ **Tiempo estimado**: ~10 minutos (5 min lectura + 5 min práctica)
+
+---
+
+## ✅ Requisitos previos
+
+- **Cuenta de GitHub** con acceso a Copilot. [Ver opciones de suscripción](https://github.com/features/copilot/plans). Estudiantes/Profesores pueden acceder a Copilot Pro [gratis a través de GitHub Education](https://education.github.com/pack).
+- **Conceptos básicos de terminal**: Cómodo usando comandos como `cd` y `ls`
+
+### Qué significa "Acceso a Copilot"
+
+GitHub Copilot CLI requiere una suscripción activa a Copilot. Puedes comprobar tu estado en [github.com/settings/copilot](https://github.com/settings/copilot). Deberías ver una de las siguientes opciones:
+
+- **Copilot Individual** - Suscripción personal
+- **Copilot Business** - A través de tu organización
+- **Copilot Enterprise** - A través de tu empresa
+- **GitHub Education** - Gratis para estudiantes/profesores verificados
+
+Si ves "You don't have access to GitHub Copilot", necesitarás usar la opción gratuita, suscribirte a un plan o unirte a una organización que proporcione acceso.
+
+---
+
+## Instalación
+
+> ⏱️ **Estimación de tiempo**: La instalación toma 2-5 minutos. La autenticación añade otros 1-2 minutos.
+
+### GitHub Codespaces (Configuración cero)
+
+Si no quieres instalar ninguno de los requisitos previos, puedes usar GitHub Codespaces, que tiene GitHub Copilot CLI listo para usar (necesitarás iniciar sesión) y preinstala Python y pytest.
+
+1. [Haz un fork de este repositorio](https://github.com/github/copilot-cli-for-beginners/fork) en tu cuenta de GitHub
+2. Selecciona **Code** > **Codespaces** > **Create codespace on main**
+3. Espera unos minutos a que se construya el contenedor
+4. ¡Ya estás listo! El terminal se abrirá automáticamente en el entorno del Codespace.
+
+> 💡 **Verificar en Codespace**: Ejecuta `cd samples/book-app-project && python book_app.py help` para confirmar que Python y la aplicación de ejemplo funcionan.
+
+### Instalación local
+
+Sigue estos pasos si deseas ejecutar Copilot CLI en tu máquina local con las muestras del curso.
+
+1. Clona el repositorio para obtener las muestras del curso en tu máquina:
+
+ ```bash
+ git clone https://github.com/github/copilot-cli-for-beginners
+ cd copilot-cli-for-beginners
+ ```
+
+2. Instala Copilot CLI usando una de las siguientes opciones.
+
+ > 💡 **¿No sabes cuál elegir?** Usa `npm` si tienes Node.js instalado. De lo contrario, elige la opción que coincida con tu sistema.
+
+ ### Todas las plataformas (npm)
+
+ ```bash
+ # Si tienes Node.js instalado, esta es una forma rápida de obtener la CLI
+ npm install -g @github/copilot
+ ```
+
+ ### macOS/Linux (Homebrew)
+
+ ```bash
+ brew install copilot-cli
+ ```
+
+ ### Windows (WinGet)
+
+ ```bash
+ winget install GitHub.Copilot
+ ```
+
+ ### macOS/Linux (Script de instalación)
+
+ ```bash
+ curl -fsSL https://gh.io/copilot-install | bash
+ ```
+
+
+Opcional: Habilitar autocompletado de pestañas en el shell
+
+El autocompletado de pestañas del shell te permite presionar **Tab** para completar subcomandos de `copilot`, opciones de comandos y algunos valores de opción. Esto es opcional, pero puede ser útil una vez que te sientas cómodo usando la CLI.
+
+Copilot CLI actualmente admite scripts de autocompletado para Bash, Zsh y Fish:
+
+```shell
+# Bash, solo para la sesión actual
+source <(copilot completion bash)
+
+# Bash, persistente en Linux
+copilot completion bash | sudo tee /etc/bash_completion.d/copilot
+
+# Zsh
+copilot completion zsh > "${fpath[1]}/_copilot"
+
+# Fish
+copilot completion fish > ~/.config/fish/completions/copilot.fish
+```
+
+Reinicia tu shell después de agregar la autocompletación de forma persistente. PowerShell es compatible para ejecutar Copilot CLI en Windows, pero `copilot completion` actualmente solo admite Bash, Zsh y Fish.
+
+
+
+---
+
+## Autenticación
+
+Abre una ventana de terminal en la raíz del repositorio `copilot-cli-for-beginners`, inicia la CLI y permite el acceso a la carpeta.
+
+```bash
+copilot
+```
+
+Se te pedirá que confíes en la carpeta que contiene el repositorio (si no lo has hecho ya). Puedes confiar en ella una sola vez o para todas las sesiones futuras.
+
+
+
+Después de confiar en la carpeta, puedes iniciar sesión con tu cuenta de GitHub.
+
+```
+> /login
+```
+
+**Qué sucede a continuación:**
+
+1. Copilot CLI muestra un código de un solo uso (como `ABCD-1234`)
+2. Tu navegador se abre en la página de autorización de dispositivo de GitHub. Inicia sesión en GitHub si aún no lo has hecho.
+3. Ingresa el código cuando se te pida
+4. Selecciona "Authorize" para otorgar acceso a GitHub Copilot CLI
+5. Vuelve a tu terminal: ¡ya has iniciado sesión!
+
+
+
+*El flujo de autorización del dispositivo: tu terminal genera un código, lo verificas en el navegador y Copilot CLI queda autenticado.*
+
+**Consejo**: El inicio de sesión persiste entre sesiones. Solo necesitas hacerlo una vez, a menos que tu token caduque o cierres la sesión explícitamente.
+
+---
+
+## Verificar que funciona
+
+### Paso 1: Probar Copilot CLI
+
+Ahora que has iniciado sesión, verifiquemos que Copilot CLI funciona para ti. En el terminal, inicia la CLI si no lo has hecho aún:
+
+```bash
+> Say hello and tell me what you can help with
+```
+
+Después de recibir una respuesta, puedes salir de la CLI:
+
+```bash
+> /exit
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas serán diferentes a lo mostrado aquí.*
+
+
+
+---
+
+**Salida esperada**: Una respuesta amigable que enumera las capacidades de Copilot CLI.
+
+### Paso 2: Ejecutar la aplicación de ejemplo de libros
+
+El curso proporciona una aplicación de ejemplo que explorarás y mejorarás a lo largo del curso usando la CLI *(Puedes ver el código en /samples/book-app-project)*. Verifica que la *aplicación de terminal de colección de libros en Python* funcione antes de comenzar. Ejecuta `python` o `python3` dependiendo de tu sistema.
+
+> **Nota:** Los ejemplos principales mostrados a lo largo del curso usan Python (`samples/book-app-project`), por lo que necesitarás tener [Python 3.10+](https://www.python.org/downloads/) disponible en tu máquina local si elegiste esa opción (el Codespace ya lo tiene instalado). Las versiones en JavaScript (`samples/book-app-project-js`) y C# (`samples/book-app-project-cs`) también están disponibles si prefieres trabajar con esos lenguajes. Cada muestra tiene un README con instrucciones para ejecutar la aplicación en ese lenguaje.
+
+```bash
+cd samples/book-app-project
+python book_app.py list
+```
+
+**Salida esperada**: Una lista de 5 libros que incluye "The Hobbit", "1984" y "Dune".
+
+### Paso 3: Probar Copilot CLI con la aplicación de libros
+
+Navega de nuevo a la raíz del repositorio primero (si ejecutaste el Paso 2):
+
+```bash
+cd ../.. # Volver a la raíz del repositorio si es necesario
+copilot
+> What does @samples/book-app-project/book_app.py do?
+```
+
+**Salida esperada**: Un resumen de las funciones y comandos principales de la aplicación de libros.
+
+Si ves un error, consulta la [sección de solución de problemas](#you-dont-have-access-to-github-copilot) a continuación.
+
+Una vez que termines puedes salir de Copilot CLI:
+
+```bash
+> /exit
+```
+
+---
+
+## ✅ ¡Estás listo!
+
+Eso es todo para la instalación. La verdadera diversión comienza en el Capítulo 01, donde:
+
+- Verás al AI revisar la aplicación de libros y encontrar problemas de calidad de código al instante
+- Aprenderás tres maneras diferentes de usar Copilot CLI
+- Generarás código funcional a partir de lenguaje natural
+
+**[Continuar al Capítulo 01: Primeros pasos →](../01-setup-and-first-steps/README.md)**
+
+---
+
+## Solución de problemas
+
+### "copilot: command not found"
+
+La CLI no está instalada. Prueba un método de instalación diferente:
+
+```bash
+# Si brew falló, prueba con npm:
+npm install -g @github/copilot
+
+# O el script de instalación:
+curl -fsSL https://gh.io/copilot-install | bash
+```
+
+### "You don't have access to GitHub Copilot"
+
+1. Verifica que tengas una suscripción a Copilot en [github.com/settings/copilot](https://github.com/settings/copilot)
+2. Comprueba que tu organización permita el acceso a la CLI si usas una cuenta de trabajo
+
+### "Authentication failed"
+
+Vuelve a autenticarte:
+
+```bash
+copilot
+> /login
+```
+
+### El navegador no abre automáticamente
+
+Visita manualmente [github.com/login/device](https://github.com/login/device) e ingresa el código que aparece en tu terminal.
+
+### Token expirado
+
+Simplemente ejecuta `/login` de nuevo:
+
+```bash
+copilot
+> /login
+```
+
+### ¿Todavía atascado?
+
+- Consulta la [documentación de GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli)
+- Busca en [GitHub Issues](https://github.com/github/copilot-cli/issues)
+
+---
+
+## 🔑 Puntos clave
+
+1. **Un GitHub Codespace es una forma rápida de empezar** - Python, pytest y GitHub Copilot CLI vienen preinstalados para que puedas saltar directamente a las demos
+2. **Múltiples métodos de instalación** - Elige lo que funcione para tu sistema (Homebrew, WinGet, npm o script de instalación)
+3. **Autenticación de una sola vez** - El inicio de sesión persiste hasta que el token caduque
+4. **La aplicación de libros funciona** - Usarás `samples/book-app-project` a lo largo de todo el curso
+
+> 📚 **Documentación oficial**: [Install Copilot CLI](https://docs.github.com/copilot/how-tos/copilot-cli/cli-getting-started) para opciones de instalación y requisitos.
+
+> 📋 **Referencia rápida**: Consulta la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+**[Continuar al Capítulo 01: Primeros pasos →](../01-setup-and-first-steps/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/01-setup-and-first-steps/README.md b/translations/es/01-setup-and-first-steps/README.md
new file mode 100644
index 00000000..5bfa1a81
--- /dev/null
+++ b/translations/es/01-setup-and-first-steps/README.md
@@ -0,0 +1,696 @@
+
+
+> **Mira cómo la IA encuentra errores al instante, explica código confuso y genera scripts funcionales. Luego aprende tres maneras diferentes de usar GitHub Copilot CLI.**
+
+¡Este capítulo es donde empieza la magia! Experimentarás de primera mano por qué los desarrolladores describen GitHub Copilot CLI como tener a un ingeniero senior en marcación rápida. Verás a la IA encontrar fallos de seguridad en segundos, obtener explicaciones de código complejo en inglés sencillo y generar scripts funcionales al instante. Luego dominarás los tres modos de interacción (Interactivo, Plan y Programático) para saber exactamente cuál usar en cada tarea.
+
+> ⚠️ **Requisitos previos**: Asegúrate de haber completado primero **[Capítulo 00: Inicio rápido](../00-quick-start/README.md)**. Necesitarás tener GitHub Copilot CLI instalado y autenticado antes de ejecutar las demostraciones a continuación.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, serás capaz de:
+
+- Experimentar el aumento de productividad que proporciona GitHub Copilot CLI mediante demostraciones prácticas
+- Elegir el modo correcto (Interactivo, Plan o Programático) para cualquier tarea
+- Usar comandos con barra para controlar tus sesiones
+
+> ⏱️ **Tiempo estimado**: ~45 minutos (15 min lectura + 30 min prácticos)
+
+---
+
+# Tu primera experiencia con Copilot CLI
+
+
+
+Sumérgete y descubre lo que Copilot CLI puede hacer.
+
+---
+
+## Ponerte cómodo: tus primeras indicaciones
+
+Antes de sumergirte en las demostraciones impresionantes, empecemos con algunas indicaciones sencillas que puedes probar ahora mismo. **No necesitas un repositorio de código**. Simplemente abre una terminal y inicia Copilot CLI:
+
+```bash
+copilot
+```
+
+Prueba estas indicaciones para principiantes:
+
+```
+> Explain what a dataclass is in Python in simple terms
+
+> Write a function that sorts a list of dictionaries by a specific key
+
+> What's the difference between a list and a tuple in Python?
+
+> Give me 5 best practices for writing clean Python code
+```
+
+¿No usas Python? ¡No hay problema! Simplemente haz preguntas sobre tu lenguaje preferido.
+
+Fíjate en lo natural que se siente. Haz preguntas como se las harías a un colega. Cuando termines de explorar, escribe `/exit` para salir de la sesión.
+
+**La idea clave**: GitHub Copilot CLI es conversacional. No necesitas sintaxis especial para empezar. Simplemente pregunta en inglés sencillo.
+
+## Verlo en acción
+
+Ahora veamos por qué los desarrolladores dicen que esto es "tener a un ingeniero senior en marcación rápida".
+
+> 📖 **Lectura de los ejemplos**: Las líneas que comienzan con `>` son indicaciones que escribes dentro de una sesión interactiva de Copilot CLI. Las líneas sin el prefijo `>` son comandos de shell que ejecutas en tu terminal.
+
+> 💡 **Sobre los resultados de ejemplo**: Las salidas de ejemplo mostradas a lo largo de este curso son ilustrativas. Dado que las respuestas de Copilot CLI varían cada vez, tus resultados diferirán en redacción, formato y detalle. Concéntrate en el *tipo* de información devuelta, no en el texto exacto.
+
+### Demostración 1: Revisión de código en segundos
+
+El curso incluye archivos de ejemplo con problemas de calidad de código intencionales. Si estás trabajando en tu máquina local y aún no has clonado el repositorio, ejecuta el comando `git clone` abajo, navega a la carpeta `copilot-cli-for-beginners` y luego ejecuta el comando `copilot`.
+
+```bash
+# Clona el repositorio del curso si estás trabajando localmente y aún no lo has hecho
+git clone https://github.com/github/copilot-cli-for-beginners
+cd copilot-cli-for-beginners
+
+# Inicia Copilot
+copilot
+```
+
+Una vez dentro de la sesión interactiva de Copilot CLI, ejecuta lo siguiente:
+
+```
+> Review @samples/book-app-project/book_app.py for code quality issues and suggest improvements
+```
+
+> 💡 **¿Para qué se usa el símbolo `@`?** El símbolo `@` indica a Copilot CLI que lea un archivo. Aprenderás todo sobre esto en el Capítulo 02. Por ahora, simplemente copia el comando exactamente como se muestra.
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+**La conclusión**: Una revisión profesional de código en segundos. La revisión manual tomaría... bueno... mucho más tiempo que eso.
+
+---
+
+### Demostración 2: Explicar código confuso
+
+¿Alguna vez te has quedado mirando código preguntándote qué hace? Prueba esto en tu sesión de Copilot CLI:
+
+```
+> Explain what @samples/book-app-project/books.py does in simple terms
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+**Qué sucede**: (tu salida será diferente) Copilot CLI lee el archivo, entiende el código y lo explica en inglés sencillo.
+
+```
+This is a book collection management module using Python dataclasses.
+
+Think of it like a digital bookshelf:
+- Book is a dataclass - a simple way to store book information (title, author, year, read status)
+- BookCollection manages the entire collection and handles saving/loading
+
+Key components:
+
+1. @dataclass decorator (line 8)
+ - Automatically creates __init__, __repr__, etc.
+ - Clean way to define data structures in Python
+
+2. BookCollection class (line 16)
+ - Maintains a list of Book objects
+ - Handles persistence with JSON file I/O
+ - load_books() reads from data.json
+ - save_books() writes to data.json using asdict()
+
+3. Book operations:
+ - add_book() - creates and saves new books
+ - find_book_by_title() - searches collection
+ - mark_as_read() - updates read status
+ - find_by_author() - filters by author name
+
+Common pattern: Read from JSON → Work with Python objects → Write back to JSON
+```
+
+**La conclusión**: Código complejo explicado como lo haría un mentor paciente.
+
+---
+
+### Demostración 3: Generar código funcional
+
+¿Necesitas una función que de otro modo pasarías 15 minutos buscando en Google? Sigue en tu sesión:
+
+```
+> Write a Python function that takes a list of books and returns statistics:
+ total count, number read, number unread, oldest and newest book
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+**Qué sucede**: Una función completa y funcional en segundos que puedes copiar-pegar-ejecutar.
+
+Cuando termines de explorar, sal de la sesión:
+
+```
+> /exit
+```
+
+**La conclusión**: Gratificación instantánea, y estuviste en una sesión continua todo el tiempo.
+
+---
+
+# Modos y comandos
+
+
+
+Acabas de ver lo que Copilot CLI puede hacer. Ahora entendamos *cómo* usar estas capacidades de forma efectiva. La clave es saber cuál de los tres modos de interacción usar en distintas situaciones.
+
+> 💡 **Nota**: Copilot CLI también tiene un modo **Autopilot** donde trabaja en las tareas sin esperar tu entrada. Es potente pero requiere conceder permisos completos y usa solicitudes premium de forma autónoma. Este curso se centra en los tres modos que se describen a continuación. Te indicaremos Autopilot una vez que te sientas cómodo con lo básico.
+
+---
+
+## 🧩 Analogía del mundo real: salir a comer
+
+Piensa en usar GitHub Copilot CLI como salir a comer. Desde planificar el viaje hasta hacer el pedido, diferentes situaciones requieren distintos enfoques:
+
+| Mode | Dining Analogy | When to Use |
+|------|----------------|-------------|
+| **Plan** | Ruta GPS al restaurante | Tareas complejas - traza la ruta, revisa las paradas, acuerda el plan y luego conduce |
+| **Interactive** | Hablar con el camarero | Exploración e iteración - haz preguntas, personaliza, recibe retroalimentación en tiempo real |
+| **Programmatic** | Pedir en el drive-through | Tareas rápidas y específicas - permanece en tu entorno, obtén un resultado rápido |
+
+Al igual que al salir a comer, aprenderás de forma natural cuándo se siente adecuado cada enfoque.
+
+
+
+*Elige tu modo según la tarea: Plan para trazarla primero, Interactivo para colaboración bidireccional, Programático para resultados rápidos de una sola vez*
+
+### ¿Con qué modo debo comenzar?
+
+**Comienza con el modo Interactivo.**
+- Puedes experimentar y hacer preguntas de seguimiento
+- El contexto se construye de forma natural a través de la conversación
+- Los errores son fáciles de corregir con `/clear`
+
+Una vez que te sientas cómodo, prueba:
+- **Modo Programático** (`copilot -p ""`) para preguntas rápidas y puntuales
+- **Modo Plan** (`/plan`) cuando necesites planificar con más detalle antes de codificar
+
+---
+
+## Los tres modos
+
+### Modo 1: Modo interactivo (comienza aquí)
+
+
+
+**Ideal para**: Exploración, iteración, conversaciones multi-turno. Como hablar con un camarero que puede responder preguntas, recibir comentarios y ajustar el pedido al instante.
+
+Inicia una sesión interactiva:
+
+```bash
+copilot
+```
+
+Como has visto hasta este punto, verás un indicador donde puedes escribir de forma natural. Para obtener ayuda sobre los comandos disponibles, simplemente escribe:
+
+```
+> /help
+```
+
+**Idea clave**: El modo interactivo mantiene el contexto. Cada mensaje se basa en los anteriores, igual que una conversación real.
+
+#### Ejemplo de modo interactivo
+
+```bash
+copilot
+
+> Review @samples/book-app-project/utils.py and suggest improvements
+
+> Add type hints to all functions
+
+> Make the error handling more robust
+
+> /exit
+```
+
+Fíjate en cómo cada indicación se basa en la respuesta anterior. Estás teniendo una conversación, no empezando de nuevo cada vez.
+
+---
+
+### Modo 2: Modo Plan
+
+
+
+**Ideal para**: Tareas complejas donde quieres revisar el enfoque antes de ejecutar. Similar a planear una ruta antes de un viaje usando GPS.
+
+El modo Plan te ayuda a crear un plan paso a paso antes de escribir cualquier código. Usa el comando `/plan`, presiona **Shift+Tab** para cambiar al Modo Plan:
+
+```bash
+copilot
+
+> /plan Add a "mark as read" command to the book app
+```
+
+> 💡 **Consejo**: **Shift+Tab** cambia entre modos: Interactivo → Plan → Autopilot. Púlsalo en cualquier momento durante una sesión interactiva para cambiar de modo sin escribir un comando.
+
+También puedes lanzar Copilot CLI directamente en modo Plan usando la bandera `--plan`:
+
+```bash
+copilot --plan
+```
+
+**Salida de modo Plan:** (tu salida puede diferir)
+
+```
+📋 Implementation Plan
+
+Step 1: Update the command handler in book_app.py
+ - Add new elif branch for "mark" command
+ - Create handle_mark_as_read() function
+
+Step 2: Implement the handler function
+ - Prompt user for book title
+ - Call collection.mark_as_read(title)
+ - Display success/failure message
+
+Step 3: Update help text
+ - Add "mark" to available commands list
+ - Document the command usage
+
+Step 4: Test the flow
+ - Add a book
+ - Mark it as read
+ - Verify status changes in list output
+
+Proceed with implementation? [Y/n]
+```
+
+**Idea clave**: El modo Plan te permite revisar y modificar el enfoque antes de que se escriba cualquier código. Una vez que un plan esté completo, incluso puedes pedirle a Copilot CLI que lo guarde en un archivo para referencia posterior. Por ejemplo, "Save this plan to `mark_as_read_plan.md`" crearía un archivo markdown con los detalles del plan.
+
+> 💡 **¿Quieres algo más complejo?** Prueba: `/plan Add search and filter capabilities to the book app`. El modo Plan escala desde características simples hasta aplicaciones completas.
+
+> 📚 **Modo Autopilot**: Puede que hayas notado que Shift+Tab recorre un tercer modo llamado **Autopilot**. En modo autopilot, Copilot ejecuta todo un plan sin esperar tu entrada después de cada paso — como delegar una tarea a un colega y decir "avísame cuando termines". El flujo típico es plan → aceptar → autopilot, lo que significa que necesitas saber redactar planes primero. También puedes iniciar directamente en autopilot con `copilot --autopilot`. Familiarízate primero con los modos Interactivo y Plan, luego consulta la [documentación oficial](https://docs.github.com/copilot/concepts/agents/copilot-cli/autopilot) cuando estés listo.
+
+---
+
+### Modo 3: Modo Programático
+
+
+
+**Ideal para**: Automatización, scripts, CI/CD, comandos de una sola ejecución. Como usar un drive-through para un pedido rápido sin necesidad de hablar con un camarero.
+
+Usa la bandera `-p` para comandos de una sola vez que no requieren interacción:
+
+```bash
+# Generar código
+copilot -p "Write a function that checks if a number is even or odd"
+
+# Obtener ayuda rápida
+copilot -p "How do I read a JSON file in Python?"
+```
+
+**Idea clave**: El modo programático te da una respuesta rápida y sale. Sin conversación, solo entrada → salida.
+
+
+📚 Ir más allá: usar el modo programático en scripts (haz clic para expandir)
+
+Una vez que te sientas cómodo, puedes usar `-p` en scripts de shell:
+
+```bash
+#!/bin/bash
+
+# Generar mensajes de commit automáticamente
+COMMIT_MSG=$(copilot -p "Generate a commit message for: $(git diff --staged)")
+git commit -m "$COMMIT_MSG"
+
+# Revisar un archivo
+copilot --allow-all -p "Review @myfile.py for issues"
+```
+> ⚠️ **Sobre `--allow-all`**: Esta bandera omite todas las solicitudes de permiso, permitiendo que Copilot CLI lea archivos, ejecute comandos y acceda a URLs sin preguntar primero. Esto es necesario para el modo programático (`-p`) ya que no hay una sesión interactiva para aprobar acciones. Usa `--allow-all` solo con indicaciones que hayas escrito tú mismo y en directorios que confíes. Nunca lo uses con entrada no confiable o en directorios sensibles.
+
+
+
+---
+
+## Comandos esenciales con barra
+
+Estos comandos son buenos para aprender inicialmente mientras te familiarizas con Copilot CLI:
+
+| Command | What It Does | When to Use |
+|---------|--------------|-------------|
+| `/ask` | Ask a quick question without it affecting your conversation history | When you want a quick answer without derailing your current task |
+| `/clear` | Clear conversation and start fresh | When switching topics |
+| `/help` | Show all available commands | When you forget a command |
+| `/model` | Show or switch AI model | When you want to change the AI model |
+| `/plan` | Plan your work out before coding | For more complex features |
+| `/research` | Deep research using GitHub and web sources | When you need to investigate a topic before coding |
+| `/exit` | End the session | When you're done |
+
+> 💡 **`/ask` vs chat normal**: Normalmente cada mensaje que envías forma parte de la conversación en curso y afecta las respuestas futuras. `/ask` es un atajo "off the record" — perfecto para preguntas rápidas y puntuales como `/ask What does YAML mean?` sin contaminar el contexto de tu sesión.
+
+> 💡 **Autocompletado con Tab**: Al escribir un comando con barra, pulsa **Tab** para autocompletar el nombre del comando o recorrer subcomandos y argumentos disponibles. Esto es especialmente útil cuando no recuerdas el nombre exacto de un comando.
+
+¡Eso es todo para comenzar! A medida que te sientas cómodo, puedes explorar comandos adicionales.
+> 📚 **Documentación oficial**: [CLI command reference](https://docs.github.com/copilot/reference/cli-command-reference) para la lista completa de comandos y opciones.
+
+
+📚 Comandos adicionales (haz clic para expandir)
+
+> 💡 Los comandos esenciales anteriores cubren gran parte de lo que harás en un uso diario. Esta referencia está aquí para cuando estés listo para explorar más.
+
+### Entorno del agente
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/agent` | Explorar y seleccionar entre los agentes disponibles |
+| `/env` | Mostrar detalles del entorno cargado — qué instrucciones, MCP servers, skills, agents, y plugins están activos |
+| `/init` | Inicializar las instrucciones de Copilot para tu repositorio |
+| `/mcp` | Gestionar la configuración del servidor MCP |
+| `/skills` | Gestionar skills para capacidades mejoradas |
+
+> 💡 Los agentes se tratan en [Capítulo 04](../04-agents-custom-instructions/README.md), las skills se tratan en [Capítulo 05](../05-skills/README.md), y los servidores MCP se tratan en [Capítulo 06](../06-mcp-servers/README.md).
+
+### Modelos y subagentes
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/delegate` | Delegar la tarea al agente en la nube de GitHub Copilot |
+| `/fleet` | Dividir una tarea compleja en subtareas paralelas para completarla más rápido |
+| `/model` | Mostrar o cambiar el modelo de IA |
+| `/tasks` | Ver subagentes en segundo plano y sesiones de shell separadas |
+
+### Código
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/diff` | Revisar los cambios realizados en el directorio actual |
+| `/pr` | Operar sobre pull requests de la rama actual |
+| `/research` | Realizar una investigación profunda usando GitHub y fuentes web |
+| `/review` | Ejecutar el agente de revisión de código para analizar cambios |
+| `/terminal-setup` | Habilitar soporte de entrada multilínea (shift+enter y ctrl+enter) |
+
+### Permisos
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/add-dir ` | Agregar un directorio a la lista permitida |
+| `/allow-all [on\|off\|show]` | Aprobar automáticamente todos los avisos de permisos; usa `on` para activar, `off` para desactivar, `show` para comprobar el estado actual |
+| `/yolo` | Alias rápido para `/allow-all on` — aprueba automáticamente todos los avisos de permisos. |
+| `/cwd`, `/cd [directory]` | Ver o cambiar el directorio de trabajo |
+| `/list-dirs` | Mostrar todos los directorios permitidos |
+
+> ⚠️ **Usar con precaución**: `/allow-all` y `/yolo` omiten los avisos de confirmación. Genial para proyectos de confianza, pero ten cuidado con código no confiable.
+
+### Sesión
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/clear` | Abandona la sesión actual (no se guarda el historial) y comienza una conversación nueva |
+| `/compact` | Resumir la conversación para reducir el uso de contexto |
+| `/context` | Mostrar el uso de tokens de la ventana de contexto y su visualización |
+| `/keep-alive` | Evitar que tu sistema entre en reposo mientras Copilot CLI está activo — útil para tareas de larga duración en un portátil |
+| `/new` | Finaliza la sesión actual (guardándola en el historial para buscar/reanudar) y comienza una conversación nueva. |
+| `/resume` | Cambiar a otra sesión (opcionalmente especificar ID o nombre de sesión) |
+| `/rename` | Renombrar la sesión actual (omitir el nombre para generar uno automáticamente) |
+| `/rewind` | Abrir un selector de línea temporal para retroceder a cualquier punto anterior de la conversación |
+| `/usage` | Mostrar métricas y estadísticas de uso de la sesión |
+| `/session` | Mostrar información de la sesión y resumen del espacio de trabajo; usa `/session delete`, `/session delete `, o `/session delete-all` para eliminar sesiones |
+| `/share` | Exportar la sesión como un archivo markdown, un gist de GitHub o un archivo HTML autocontenido |
+
+### Pantalla
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/statusline` (or `/footer`) | Personalizar qué elementos aparecen en la barra de estado en la parte inferior de la sesión (directorio, rama, esfuerzo, ventana de contexto, cuota) |
+| `/theme` | Ver o establecer el tema del terminal |
+
+### Ayuda y comentarios
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/changelog` | Mostrar el registro de cambios de las versiones del CLI |
+| `/feedback` | Enviar comentarios a GitHub |
+| `/help` | Mostrar todos los comandos disponibles |
+
+### Comandos de shell rápidos
+
+Ejecuta comandos de shell directamente sin IA añadiendo `!` como prefijo:
+
+```bash
+copilot
+
+> !git status
+# Ejecuta git status directamente, omitiendo la IA
+
+> !python -m pytest tests/
+# Ejecuta pytest directamente
+```
+
+### Cambiar modelos
+
+Copilot CLI admite múltiples modelos de IA de OpenAI, Anthropic, Google y otros. Los modelos disponibles dependen de tu nivel de suscripción y región. Usa `/model` para ver tus opciones y cambiar entre ellos:
+
+```bash
+copilot
+> /model
+
+# Muestra los modelos disponibles y te permite elegir uno. Selecciona Sonnet 4.5.
+```
+
+> 💡 **Consejo**: Algunos modelos consumen más "solicitudes premium" que otros. Los modelos marcados con **1x** (como Claude Sonnet 4.5) son una excelente opción predeterminada: son capaces y eficientes. Los modelos con multiplicadores más altos agotan tu cuota de solicitudes premium más rápido, así que resérvelos para cuando realmente los necesites.
+
+> 💡 **Not sure which model to pick?** Select **`Auto`** from the model picker to let Copilot automatically choose the best available model for each session. This is a great default if you're just getting started and don't want to think about model selection.
+
+
+
+---
+
+# Práctica
+
+
+
+Es hora de poner en práctica lo que has aprendido.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+### Exploración interactiva
+
+Inicia Copilot y usa indicaciones de seguimiento para mejorar iterativamente la aplicación de libros:
+
+```bash
+copilot
+
+> Review @samples/book-app-project/book_app.py - what could be improved?
+
+> Refactor the if/elif chain into a more maintainable structure
+
+> Add type hints to all the handler functions
+
+> /exit
+```
+
+### Planificar una característica
+
+Usa `/plan` para que Copilot CLI planifique una implementación antes de escribir código:
+
+```bash
+copilot
+
+> /plan Add a search feature to the book app that can find books by title or author
+
+# Revisa el plan
+# Aprueba o modifica
+# Observa su implementación paso a paso
+```
+
+### Automatizar con el modo programático
+
+The `-p` flag lets you run Copilot CLI directly from your terminal without entering interactive mode. Copy and paste the following script into your terminal (not inside Copilot) from the repository root to review all Python files in the book app.
+
+```bash
+# Revisar todos los archivos Python en la aplicación de libros
+for file in samples/book-app-project/*.py; do
+ echo "Reviewing $file..."
+ copilot --allow-all -p "Quick code quality review of @$file - critical issues only"
+done
+```
+
+**PowerShell (Windows):**
+
+```powershell
+# Revisar todos los archivos de Python en la aplicación del libro
+Get-ChildItem samples/book-app-project/*.py | ForEach-Object {
+ $relativePath = "samples/book-app-project/$($_.Name)";
+ Write-Host "Reviewing $relativePath...";
+ copilot --allow-all -p "Quick code quality review of @$relativePath - critical issues only"
+}
+```
+
+---
+
+After completing the demos, try these variations:
+
+1. **Desafío interactivo**: Inicia `copilot` y explora la aplicación de libros. Pregunta por `@samples/book-app-project/books.py` y solicita mejoras 3 veces seguidas.
+
+2. **Desafío en modo Plan**: Ejecuta `/plan Add rating and review features to the book app`. Lee el plan cuidadosamente. ¿Tiene sentido?
+
+3. **Desafío programático**: Ejecuta `copilot --allow-all -p "List all functions in @samples/book-app-project/book_app.py and describe what each does"`. ¿Funcionó a la primera?
+
+---
+
+## 💡 Consejo: Controla tu sesión CLI desde la web o el móvil
+
+GitHub Copilot CLI soporta **sesiones remotas**, permitiéndote monitorizar e interactuar con una sesión CLI en ejecución desde un navegador web (en escritorio o móvil) o la app GitHub Mobile sin estar físicamente en tu terminal.
+
+Start a remote session with the `--remote` flag:
+
+```bash
+copilot --remote
+```
+
+Copilot CLI will display a link and provide access to a QR code. Open the link on your phone or in a desktop browser tab to watch the session in real time, send follow-up prompts, review plans, and steer the agent remotely. Sessions are user-specific so you can only access your own Copilot CLI sessions.
+
+También puedes habilitar el acceso remoto desde dentro de una sesión activa en cualquier momento:
+
+```
+> /remote
+```
+
+Se pueden encontrar más detalles sobre las sesiones remotas en los [Copilot CLI docs](https://docs.github.com/copilot/how-tos/copilot-cli/steer-remotely).
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Mejora las utilidades de la aplicación de libros
+
+Los ejemplos prácticos se centraron en revisar y refactorizar `book_app.py`. Ahora practica las mismas habilidades en un archivo diferente, `utils.py`:
+
+1. Inicia una sesión interactiva: `copilot`
+2. Pide a Copilot CLI que resuma el archivo: "Summarize @samples/book-app-project/utils.py and explain what each function in this file does"
+3. Pídele que añada validación de entrada: "Add validation to `get_user_choice()` so it handles empty input and non-numeric entries"
+4. Pídele que mejore el manejo de errores: "What happens if `get_book_details()` receives an empty string for the title? Add guards for that."
+5. Pídele un docstring: "Add a comprehensive docstring to `get_book_details()` with parameter descriptions and return values"
+6. Observa cómo el contexto se mantiene entre indicaciones. Cada mejora se basa en la anterior
+7. Sal con `/exit`
+
+**Criterio de éxito**: Debes tener un `utils.py` mejorado con validación de entrada, manejo de errores y un docstring, todo construido mediante una conversación de múltiples turnos.
+
+
+💡 Sugerencias (haz clic para expandir)
+
+**Ejemplos de indicaciones para probar:**
+```bash
+> @samples/book-app-project/utils.py What does each function in this file do?
+> Add validation to get_user_choice() so it handles empty input and non-numeric entries
+> What happens if get_book_details() receives an empty string for the title? Add guards for that.
+> Add a comprehensive docstring to get_book_details() with parameter descriptions and return values
+```
+
+**Problemas comunes:**
+- Si Copilot CLI hace preguntas aclaratorias, respóndelas de forma natural
+- El contexto se mantiene, así que cada indicación se basa en la anterior
+- Usa `/clear` si quieres empezar de nuevo
+
+
+
+### Desafío adicional: Compara los modos
+
+Los ejemplos usaron `/plan` para una función de búsqueda y `-p` para revisiones en lote. Ahora prueba los tres modos en una sola tarea nueva: añadir un método `list_by_year()` a la clase `BookCollection`:
+
+1. **Interactivo**: `copilot` → pídele que diseñe y construya el método paso a paso
+2. **Plan**: `/plan Add a list_by_year(start, end) method to BookCollection that filters books by publication year range`
+3. **Programático**: `copilot --allow-all -p "@samples/book-app-project/books.py Add a list_by_year(start, end) method that returns books published between start and end year inclusive"`
+
+**Reflexión**: ¿Qué modo te resultó más natural? ¿Cuándo usarías cada uno?
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haz clic para expandir)
+
+### Errores comunes
+
+| Error | Qué ocurre | Solución |
+|---------|--------------|-----|
+| Escribir `exit` en lugar de `/exit` | Copilot CLI trata "exit" como una indicación, no como un comando | Los comandos con slash siempre comienzan con `/` |
+| Usar `-p` para conversaciones de varios turnos | Cada llamada `-p` es aislada sin memoria de llamadas previas | Usa el modo interactivo (`copilot`) para conversaciones que se basan en el contexto |
+| Olvidar las comillas alrededor de indicaciones con `$` o `!` | El shell interpreta caracteres especiales antes de que Copilot CLI los vea | Encierra las indicaciones entre comillas: `copilot -p "What does $HOME mean?"` |
+| Pulsar Esc una vez para cancelar una tarea en ejecución | Un solo Esc ya no cancela el trabajo en curso (para evitar accidentes) | Pulsa **Esc dos veces** para cancelar mientras Copilot CLI está procesando |
+
+### Solución de problemas
+
+**"Model not available"** - Tu suscripción puede no incluir todos los modelos. Usa `/model` para ver lo disponible.
+
+**"Context too long"** - Tu conversación ha usado toda la ventana de contexto. Usa `/clear` para reiniciar, o inicia una nueva sesión.
+
+**"Rate limit exceeded"** - Espera unos minutos e inténtalo de nuevo. Considera usar el modo programático para operaciones por lotes con pausas.
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **El modo interactivo** es para exploración e iteración - el contexto se mantiene. Es como mantener una conversación con alguien que recuerda lo que has dicho hasta ese punto.
+2. **El modo Plan** suele ser para tareas más complejas. Revisa antes de implementar.
+3. **El modo programático** es para automatización. No se necesita interacción.
+4. **Comandos esenciales** (`/ask`, `/help`, `/clear`, `/plan`, `/research`, `/model`, `/exit`) cubren la mayor parte del uso diario.
+
+> 📋 **Referencia rápida**: Consulta la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para la lista completa de comandos y atajos.
+
+---
+
+## ➡️ ¿Qué sigue?
+
+Ahora que entiendes los tres modos, aprendamos cómo dar contexto a Copilot CLI sobre tu código.
+
+En **[Capítulo 02: Contexto y conversaciones](../02-context-conversations/README.md)**, aprenderás:
+
+- La sintaxis `@` para referenciar archivos y directorios
+- Gestión de sesiones con `--resume` y `--continue`
+- Cómo la gestión del contexto hace que Copilot CLI sea realmente potente
+
+---
+
+**[← Volver al inicio del curso](../README.md)** | **[Continuar al Capítulo 02 →](../02-context-conversations/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/02-context-conversations/README.md b/translations/es/02-context-conversations/README.md
new file mode 100644
index 00000000..adaccb80
--- /dev/null
+++ b/translations/es/02-context-conversations/README.md
@@ -0,0 +1,915 @@
+
+
+> **¿Y si la IA pudiera ver todo tu conjunto de código, no solo un archivo a la vez?**
+
+En este capítulo, desbloquearás el verdadero poder de GitHub Copilot CLI: el contexto. Aprenderás a usar la sintaxis `@` para referenciar archivos y directorios, dándole a Copilot CLI una comprensión profunda de tu base de código. Descubrirás cómo mantener conversaciones a lo largo de sesiones, reanudar el trabajo días después exactamente donde lo dejaste, y verás cómo el análisis entre archivos detecta errores que las revisiones de un solo archivo pasan por alto por completo.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, podrás:
+
+- Usar la sintaxis `@` para referenciar archivos, directorios e imágenes
+- Reanudar sesiones previas con `--resume` y `--continue`
+- Entender cómo funcionan las [ventanas de contexto](../GLOSSARY.md#context-window)
+- Escribir conversaciones multi-turno efectivas
+- Gestionar permisos de directorio para flujos de trabajo multiproyecto
+
+> ⏱️ **Tiempo estimado**: ~50 minutos (20 min lectura + 30 min práctica)
+
+---
+
+## 🧩 Analogía del mundo real: Trabajar con un colega
+
+
+
+*Al igual que tus colegas, Copilot CLI no es un lector de mentes. ¡Proveer más información ayuda tanto a las personas como a Copilot a ofrecer soporte más preciso!*
+
+Imagina explicar un error a un colega:
+
+> **Sin contexto**: "La aplicación de libros no funciona."
+
+> **Con contexto**: "Mira `books.py`, especialmente la función `find_book_by_title`. No está haciendo una comparación sin distinguir mayúsculas y minúsculas."
+
+Para proporcionar contexto a Copilot CLI usa *la sintaxis `@`* para apuntar a Copilot CLI a archivos específicos.
+
+---
+
+# Esencial: Contexto básico
+
+
+
+Esta sección cubre todo lo que necesitas para trabajar eficazmente con el contexto. Domina estos conceptos básicos primero.
+
+---
+
+## La sintaxis @
+
+El símbolo `@` referencia archivos y directorios en tus prompts. Es la forma en que le dices a Copilot CLI "mira este archivo".
+
+> 💡 **Nota**: Todos los ejemplos en este curso usan la carpeta `samples/` incluida en este repositorio, así que puedes probar cada comando directamente.
+
+### Pruébalo ahora (No requiere configuración)
+
+Puedes probar esto con cualquier archivo en tu ordenador:
+
+```bash
+copilot
+
+# Apunta a cualquier archivo que tengas.
+> Explain what @package.json does
+> Summarize @README.md
+> What's in @.gitignore and why?
+```
+
+> 💡 **¿No tienes un proyecto a mano?** Crea un archivo de prueba rápido:
+> ```bash
+> echo "def greet(name): return 'Hello ' + name" > test.py
+> copilot
+> > What does @test.py do?
+> ```
+
+### Patrones básicos de @
+
+| Patrón | Qué hace | Ejemplo de uso |
+|---------|--------------|-------------|
+| `@file.py` | Referencia un solo archivo | `Review @samples/book-app-project/books.py` |
+| `@folder/` | Referencia todos los archivos en un directorio | `Review @samples/book-app-project/` |
+| `@file1.py @file2.py` | Referencia múltiples archivos | `Compare @samples/book-app-project/book_app.py @samples/book-app-project/books.py` |
+
+### Referenciar un solo archivo
+
+```bash
+copilot
+
+> Explain what @samples/book-app-project/utils.py does
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas serán diferentes a lo mostrado aquí.*
+
+
+
+---
+
+### Referenciar múltiples archivos
+
+```bash
+copilot
+
+> Compare @samples/book-app-project/book_app.py and @samples/book-app-project/books.py for consistency
+```
+
+### Referenciar un directorio entero
+
+```bash
+copilot
+
+> Review all files in @samples/book-app-project/ for error handling
+```
+
+---
+
+## Inteligencia entre archivos
+
+Aquí es donde el contexto se convierte en una superpotencia. El análisis de un solo archivo es útil. El análisis entre archivos es transformador.
+
+
+
+### Demostración: Encontrar errores que abarcan múltiples archivos
+
+```bash
+copilot
+
+> @samples/book-app-project/book_app.py @samples/book-app-project/books.py
+>
+> How do these files work together? What's the data flow?
+```
+
+> 💡 **Opción avanzada**: Para análisis de seguridad enfocados en múltiples archivos, prueba los ejemplos de seguridad en Python:
+> ```bash
+> > @samples/buggy-code/python/user_service.py @samples/buggy-code/python/payment_processor.py
+> > Find security vulnerabilities that span BOTH files
+> ```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas serán diferentes a lo mostrado aquí.*
+
+
+
+---
+
+**Qué descubre Copilot CLI**:
+
+```
+Cross-Module Analysis
+=====================
+
+1. DATA FLOW PATTERN
+ book_app.py creates BookCollection instance and calls methods
+ books.py defines BookCollection class and manages data persistence
+
+ Flow: book_app.py (UI) → books.py (business logic) → data.json (storage)
+
+2. DUPLICATE DISPLAY FUNCTIONS
+ book_app.py:9-21 show_books() function
+ utils.py:28-36 print_books() function
+
+ Impact: Two nearly identical functions doing the same thing. If you update
+ one (like changing the format), you must remember to update the other.
+
+3. INCONSISTENT ERROR HANDLING
+ book_app.py handles ValueError from year conversion
+ books.py silently returns None/False on errors
+
+ Pattern: No unified approach to error handling across modules
+```
+
+**Por qué esto importa**: Una revisión de un solo archivo perdería la visión global. Solo el análisis entre archivos revela:
+- **Código duplicado** que debería consolidarse
+- **Patrones de flujo de datos** que muestran cómo interactúan los componentes
+- **Problemas de arquitectura** que afectan la mantenibilidad
+
+---
+
+### Demostración: Entender una base de código en 60 segundos
+
+
+
+¿Nuevo en un proyecto? Conócelo rápidamente usando Copilot CLI.
+
+```bash
+copilot
+
+> @samples/book-app-project/
+>
+> In one paragraph, what does this app do and what are its biggest quality issues?
+```
+
+**Lo que obtienes**:
+```
+This is a CLI book collection manager that lets users add, list, remove, and
+search books stored in a JSON file. The biggest quality issues are:
+
+1. Duplicate display logic - show_books() and print_books() do the same thing
+2. Inconsistent error handling - some errors raise exceptions, others return False
+3. No input validation - year can be 0, empty strings accepted for title/author
+4. Missing tests - no test coverage for critical functions like find_book_by_title
+
+Priority fix: Consolidate duplicate display functions and add input validation.
+```
+
+**Resultado**: Lo que toma una hora de lectura de código comprimido en 10 segundos. Sabes exactamente en qué enfocarte.
+
+---
+
+## Ejemplos prácticos
+
+### Ejemplo 1: Revisión de código con contexto
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Review this file for potential bugs
+
+# Copilot CLI ahora tiene el contenido completo del archivo y puede dar retroalimentación específica:
+# "Línea 49: La comparación con distinción entre mayúsculas y minúsculas puede omitir libros..."
+# "Línea 29: Los errores de decodificación JSON se capturan, pero la corrupción de datos no se registra..."
+
+> What about @samples/book-app-project/book_app.py?
+
+# Ahora revisando book_app.py, pero aún consciente del contexto de books.py
+```
+
+### Ejemplo 2: Comprensión de una base de código
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py What does this module do?
+
+# Copilot CLI lee books.py y comprende la clase BookCollection
+
+> @samples/book-app-project/ Give me an overview of the code structure
+
+# Copilot CLI escanea el directorio y hace un resumen
+
+> How does the app save and load books?
+
+# Copilot CLI puede rastrear el código que ya ha visto
+```
+
+
+🎬 Observa una conversación de varios turnos en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas serán diferentes a lo mostrado aquí.*
+
+
+
+### Ejemplo 3: Refactorización entre múltiples archivos
+
+```bash
+copilot
+
+> @samples/book-app-project/book_app.py @samples/book-app-project/utils.py
+> I see duplicate display functions: show_books() and print_books(). Help me consolidate these.
+
+# Copilot CLI ve ambos archivos y puede sugerir cómo fusionar el código duplicado
+```
+
+---
+
+## Gestión de sesiones
+
+Las sesiones se guardan automáticamente mientras trabajas. Puedes reanudar sesiones previas para continuar donde lo dejaste.
+
+### Guardado automático de sesiones
+
+Cada conversación se guarda automáticamente. Simplemente sal normalmente:
+
+```bash
+copilot
+
+> @samples/book-app-project/ Let's improve error handling across all modules
+
+[... do some work ...]
+
+> /exit
+```
+
+### Reanudar la sesión más reciente
+
+```bash
+# Continúa donde lo dejaste
+copilot --continue
+```
+
+### Reanudar una sesión específica
+
+```bash
+# Elige de una lista de sesiones de forma interactiva
+copilot --resume
+
+# O reanuda una sesión específica mediante su ID
+copilot --resume=abc123
+
+# O reanuda usando el nombre que le diste a la sesión
+copilot --resume="my book app review"
+```
+
+> 💡 **¿Cómo encuentro un ID de sesión?** No necesitas memorizarlos. Ejecutar `copilot --resume` sin un ID muestra una lista interactiva de tus sesiones previas, sus nombres, IDs y cuándo estuvieron activas por última vez. Simplemente elige la que quieras.
+>
+> **¿Y si hay múltiples terminales?** Cada ventana de terminal es su propia sesión con su propio contexto. Si tienes Copilot CLI abierto en tres terminales, son tres sesiones separadas. Ejecutar `--resume` desde cualquier terminal te permite navegar por todas ellas. La opción `--continue` toma la sesión desde el directorio de trabajo actual primero; si no existe ninguna allí, selecciona la sesión más recientemente activa.
+>
+> **¿Puedo cambiar de sesión sin reiniciar?** Sí. Usa el comando slash `/resume` desde dentro de una sesión activa:
+> ```
+> > /resume
+> # Shows a list of sessions to switch to
+> ```
+
+### Organiza tus sesiones
+
+Dale nombres significativos a las sesiones para que puedas encontrarlas luego. Puedes nombrar una sesión cuando la inicias, o renombrarla en cualquier momento mientras estés dentro de la sesión:
+
+```bash
+# Nombra una sesión justo cuando la inicias
+copilot --name book-app-review
+
+# O renombra la sesión actual desde dentro
+copilot
+
+> /rename book-app-review
+# Sesión renombrada para facilitar su identificación
+```
+
+Una vez que una sesión tiene nombre, puedes reanudarla directamente por nombre sin navegar por una lista:
+
+```bash
+copilot --resume=book-app-review
+```
+
+Para limpiar sesiones que ya no necesitas, usa `/session delete` desde dentro de una sesión:
+
+```bash
+copilot
+
+> /session delete # Elimina la sesión actual
+> /session delete abc123 # Elimina una sesión específica por su ID
+> /session delete-all # Elimina todas las sesiones (¡Usar con precaución!)
+```
+
+### Ver y gestionar el contexto
+
+A medida que agregas archivos y conversación, la [ventana de contexto](../GLOSSARY.md#context-window) de Copilot CLI se va llenando. Hay varios comandos disponibles para ayudarte a mantener el control:
+
+```bash
+copilot
+
+> /context
+Context usage: 62k/200k tokens (31%)
+
+> /clear
+# Abandona la sesión actual (no se guarda el historial) y comienza una conversación nueva
+
+> /new
+# Finaliza la sesión actual (guardándola en el historial para búsqueda o reanudación) y comienza una conversación nueva
+
+> /rewind
+# Abre un selector de línea temporal que te permite retroceder a un punto anterior de tu conversación
+```
+
+> 💡 **Cuándo usar `/clear` o `/new`**: Si has estado revisando books.py y quieres cambiar a discutir utils.py, ejecuta /new primero (o /clear si no necesitas el historial de la sesión). De lo contrario, el contexto obsoleto del tema anterior puede confundir las respuestas.
+
+> 💡 **¿Cometiste un error o quieres probar otro enfoque?** Usa `/rewind` (o presiona Esc dos veces) para abrir un **selector de línea de tiempo** que te permite retroceder a cualquier punto anterior en tu conversación, no solo al más reciente. Esto es útil cuando seguiste un camino equivocado y quieres retroceder sin empezar de nuevo por completo.
+
+---
+
+### Retoma donde lo dejaste
+
+
+
+*Las sesiones se guardan automáticamente cuando sales. Reanuda días después con todo el contexto: archivos, problemas y progreso recordados.*
+
+Imagina este flujo de trabajo a lo largo de varios días:
+
+```bash
+# Lunes: Iniciar la revisión de la aplicación de libros con un nombre desde el principio
+copilot --name book-app-review
+
+> @samples/book-app-project/books.py
+> Review and number all code quality issues
+
+Quality Issues Found:
+1. Duplicate display functions (book_app.py & utils.py) - MEDIUM
+2. No input validation for empty strings - MEDIUM
+3. Year can be 0 or negative - LOW
+4. No type hints on all functions - LOW
+5. Missing error logging - LOW
+
+> Fix issue #1 (funciones duplicadas)
+# Trabajar en la corrección...
+
+> /exit
+```
+
+```bash
+# Miércoles: Reanuda exactamente donde lo dejaste, por nombre
+copilot --resume=book-app-review
+
+> What issues remain unfixed from our book app review?
+
+Remaining issues from our book-app-review session:
+2. No input validation for empty strings - MEDIUM
+3. Year can be 0 or negative - LOW
+4. No type hints on all functions - LOW
+5. Missing error logging - LOW
+
+Issue #1 (funciones duplicadas) se corrigió el lunes.
+
+> Let's tackle issue #2 next
+```
+
+**Qué hace esto poderoso**: Días después, Copilot CLI recuerda:
+- El archivo exacto en el que estabas trabajando
+- La lista numerada de problemas
+- Cuáles ya has abordado
+- El contexto de tu conversación
+
+No necesitas volver a explicar. No volver a leer archivos. Simplemente continúa trabajando.
+
+---
+
+**🎉 ¡Ahora conoces lo esencial!** La sintaxis `@`, la gestión de sesiones (`--name`/`--continue`/`--resume`/`/rename`), y los comandos de contexto (`/context`/`/clear`) son suficientes para ser muy productivo. Todo lo que sigue es opcional. Vuelve a ello cuando estés listo.
+
+---
+
+# Opcional: Profundizar
+
+
+
+Estos temas se basan en los esenciales anteriores. **Elige lo que te interese, o salta directamente a [Practice](#el-espectro-de-especificidad).**
+
+| Quiero aprender sobre... | Ir a |
+|---|---|
+| Patrones comodín y comandos avanzados de sesión | [Additional @ Patterns & Session Commands](#ver-y-gestionar-el-contexto) |
+| Aprovechar el contexto a través de múltiples solicitudes | [Context-Aware Conversations](#patrones-adicionales-de) |
+| Límites de tokens y `/compact` | [Understanding Context Windows](#compartir-tu-sesión) |
+| Cómo elegir los archivos correctos para referenciar | [Choosing What to Reference](#el-comando-compact) |
+| Analizar capturas de pantalla y maquetas | [Working with Images](#qué-incluir-vs-excluir) |
+
+
+Patrones adicionales de @ y comandos de sesión
+
+
+### Patrones adicionales de @
+
+Para usuarios avanzados, Copilot CLI soporta patrones comodín y referencias a imágenes:
+
+| Patrón | Qué hace |
+|---------|--------------|
+| `@folder/*.py` | Todos los archivos .py en la carpeta |
+| `@**/test_*.py` | Comodín recursivo: encuentra todos los archivos de prueba en cualquier parte |
+| `@image.png` | Archivo de imagen para revisión de UI |
+
+```bash
+copilot
+
+> Find all TODO comments in @samples/book-app-project/**/*.py
+```
+
+### Ver información de la sesión
+
+```bash
+copilot
+
+> /session
+# Muestra los detalles de la sesión actual y el resumen del espacio de trabajo
+
+> /usage
+# Muestra métricas y estadísticas de la sesión
+```
+
+### Compartir tu sesión
+
+```bash
+copilot
+
+> /share file ./my-session.md
+# Exporta la sesión como un archivo markdown
+
+> /share gist
+# Crea un gist en GitHub con la sesión
+
+> /share html
+# Exporta la sesión como un archivo HTML interactivo autocontenido
+# Útil para compartir informes de sesión pulidos con compañeros de equipo o guardarlos como referencia
+```
+
+
+
+
+Conversaciones conscientes del contexto
+
+
+### Conversaciones conscientes del contexto
+
+La magia ocurre cuando tienes conversaciones de varios turnos que se construyen unas sobre otras.
+
+#### Ejemplo: Mejora progresiva
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Review the BookCollection class
+
+Copilot CLI: "The class looks functional, but I notice:
+1. Missing type hints on some methods
+2. No validation for empty title/author
+3. Could benefit from better error handling"
+
+> Add type hints to all methods
+
+Copilot CLI: "Here's the class with complete type hints..."
+[Shows typed version]
+
+> Now improve error handling
+
+Copilot CLI: "Building on the typed version, here's improved error handling..."
+[Adds validation and proper exceptions]
+
+> Generate tests for this final version
+
+Copilot CLI: "Based on the class with types and error handling..."
+[Generates comprehensive tests]
+```
+
+Fíjate cómo cada solicitud se basa en el trabajo anterior. Este es el poder del contexto.
+
+
+
+
+Entendiendo las ventanas de contexto
+
+
+### Entendiendo las ventanas de contexto
+
+Ya conoces `/context` y `/clear` de lo esencial. Aquí tienes una imagen más profunda de cómo funcionan las ventanas de contexto.
+
+Todo AI tiene una "ventana de contexto", que es la cantidad de texto que puede considerar a la vez.
+
+
+
+*La ventana de contexto es como un escritorio: solo puede sujetar cierta cantidad a la vez. Los archivos, el historial de la conversación y los prompts del sistema ocupan espacio.*
+
+#### Qué sucede al llegar al límite
+
+```bash
+copilot
+
+> /context
+
+Context usage: 45,000 / 128,000 tokens (35%)
+
+# A medida que agregas más archivos y conversación, esto crece
+
+> @large-codebase/
+
+Context usage: 120,000 / 128,000 tokens (94%)
+
+# Advertencia: Se está acercando al límite de contexto
+
+> @another-large-file.py
+
+Context limit reached. Older context will be summarized.
+```
+
+#### El comando `/compact`
+
+Cuando tu contexto se está llenando pero no quieres perder la conversación, `/compact` resume tu historial para liberar tokens:
+
+```bash
+copilot
+
+> /compact
+# Resume el historial de la conversación, liberando espacio de contexto
+# Se conservan sus hallazgos y decisiones clave
+```
+
+#### Consejos de eficiencia de contexto
+
+| Situación | Acción | Por qué |
+|-----------|--------|-----|
+| Empezando un nuevo tema | `/clear` | Elimina contexto irrelevante |
+| Seguiste un camino equivocado | `/rewind` | Retrocede a cualquier punto anterior |
+| Conversación larga | `/compact` | Resume el historial, libera tokens |
+| Necesitas un archivo específico | `@file.py` no `@folder/` | Carga solo lo que necesitas |
+| Alcanzando límites | `/new` o `/clear` | Contexto fresco |
+| Múltiples temas | Usa `/rename` por tema | Fácil de reanudar la sesión correcta |
+
+#### Buenas prácticas para bases de código grandes
+
+1. **Sé específico**: `@samples/book-app-project/books.py` en lugar de `@samples/book-app-project/`
+2. **Limpia el contexto entre temas**: Usa `/new` o `/clear` al cambiar de enfoque
+3. **Usa `/compact`**: Resume la conversación para liberar contexto
+4. **Usa múltiples sesiones**: Una sesión por característica o tema
+
+
+
+
+Elegir qué referenciar
+
+
+### Elegir qué referenciar
+
+No todos los archivos son iguales en términos de contexto. Aquí tienes cómo elegir sabiamente:
+
+#### Consideraciones sobre el tamaño de los archivos
+
+| Tamaño del archivo | Aproximados de [Tokens](../GLOSSARY.md#token) | Estrategia |
+|-----------|-------------------|----------|
+| Pequeño (<100 líneas) | ~500-1,500 tokens | Referenciar libremente |
+| Mediano (100-500 líneas) | ~1,500-7,500 tokens | Referenciar archivos específicos |
+| Grande (500+ líneas) | 7,500+ tokens | Sé selectivo, usa archivos específicos |
+| Muy grande (1000+ líneas) | 15,000+ tokens | Considera dividir o enfocarte en secciones |
+
+**Ejemplos concretos:**
+- Los 4 archivos Python de la app del libro combinados ≈ 2,000-3,000 tokens
+- Un módulo Python típico (200 líneas) ≈ 3,000 tokens
+- Un archivo de API Flask (400 líneas) ≈ 6,000 tokens
+- Tu package.json ≈ 200-500 tokens
+- Un prompt corto + respuesta ≈ 500-1,500 tokens
+
+> 💡 **Estimación rápida para código:** Multiplica las líneas de código por ~15 para obtener los tokens aproximados. Ten en cuenta que esto es solo una estimación.
+
+#### Qué incluir vs. excluir
+
+**Alto valor** (incluye estos):
+- Puntos de entrada (`book_app.py`, `main.py`, `app.py`)
+- Los archivos específicos sobre los que preguntas
+- Archivos importados directamente por tu archivo objetivo
+- Archivos de configuración (`requirements.txt`, `pyproject.toml`)
+- Modelos de datos o dataclasses
+
+**Menor valor** (considera excluir):
+- Archivos generados (salida compilada, assets empaquetados)
+- Node modules o directorios vendor
+- Archivos de datos grandes o fixtures
+- Archivos no relacionados con tu pregunta
+
+#### El espectro de especificidad
+
+```
+Less specific ────────────────────────► More specific
+@samples/book-app-project/ @samples/book-app-project/books.py:47-52
+ │ │
+ └─ Scans everything └─ Just what you need
+ (uses more context) (preserves context)
+```
+
+**Cuándo ser amplio** (`@samples/book-app-project/`):
+- Exploración inicial de la base de código
+- Encontrar patrones en muchos archivos
+- Revisiones de arquitectura
+
+**Cuándo ser específico** (`@samples/book-app-project/books.py`):
+- Depurar un problema en particular
+- Revisión de código de un archivo específico
+- Preguntar sobre una sola función
+
+#### Ejemplo práctico: Carga de contexto por etapas
+
+```bash
+copilot
+
+# Paso 1: Comienza con la estructura
+> @package.json What frameworks does this project use?
+
+# Paso 2: Restringe según la respuesta
+> @samples/book-app-project/ Show me the project structure
+
+# Paso 3: Concéntrate en lo que importa
+> @samples/book-app-project/books.py Review the BookCollection class
+
+# Paso 4: Agrega archivos relacionados solo cuando sea necesario
+> @samples/book-app-project/book_app.py @samples/book-app-project/books.py How does the CLI use the BookCollection?
+```
+
+Este enfoque por etapas mantiene el contexto enfocado y eficiente.
+
+
+
+
+Trabajar con imágenes
+
+
+### Trabajar con imágenes
+
+Puedes incluir imágenes en tus conversaciones usando la sintaxis `@`, o simplemente **pegar desde tu portapapeles** (Cmd+V / Ctrl+V). Copilot CLI puede analizar capturas de pantalla, maquetas y diagramas para ayudar con la depuración de IU, la implementación de diseño y el análisis de errores.
+
+```bash
+copilot
+
+> @images/screenshot.png What is happening in this image?
+
+> @images/mockup.png Write the HTML and CSS to match this design. Place it in a new file called index.html and put the CSS in styles.css.
+```
+
+> 📖 **Más información**: Consulta [Funciones adicionales de contexto](../appendices/additional-context.md#trabajar-con-imágenes) para formatos compatibles, casos de uso prácticos y consejos para combinar imágenes con código.
+
+
+
+---
+
+# Práctica
+
+
+
+Es hora de aplicar tus habilidades de gestión de contexto y sesiones.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+### Revisión completa del proyecto
+
+El curso incluye archivos de ejemplo que puedes revisar directamente. Inicia copilot y ejecuta el prompt que se muestra a continuación:
+
+```bash
+copilot
+
+> @samples/book-app-project/ Give me a code quality review of this project
+
+# Copilot CLI identificará problemas como:
+# - Funciones de visualización duplicadas
+# - Falta de validación de entradas
+# - Manejo de errores inconsistente
+```
+
+> 💡 **¿Quieres probar con tus propios archivos?** Crea un pequeño proyecto Python (`mkdir -p my-project/src`), agrega algunos archivos .py, luego usa `@my-project/src/` para revisarlos. ¡Puedes pedirle a copilot que cree código de ejemplo si quieres!
+
+### Flujo de trabajo de la sesión
+
+```bash
+copilot
+
+> /rename book-app-review
+> @samples/book-app-project/books.py Let's add input validation for empty titles
+
+[Copilot CLI suggests validation approach]
+
+> Implement that fix
+> Now consolidate the duplicate display functions in @samples/book-app-project/
+> /exit
+
+# Más tarde - retoma donde lo dejaste
+copilot --continue
+
+> Generate tests for the changes we made
+```
+
+---
+
+Después de completar las demos, prueba estas variaciones:
+
+1. **Desafío entre archivos**: Analiza cómo interactúan book_app.py y books.py:
+ ```bash
+ copilot
+ > @samples/book-app-project/book_app.py @samples/book-app-project/books.py
+ > What's the relationship between these files? Are there any code smells?
+ ```
+
+2. **Desafío de sesión**: Inicia una sesión, nómbrala con `/rename my-first-session`, trabaja en algo, sal con `/exit`, luego ejecuta `copilot --continue`. ¿Recuerda lo que estabas haciendo?
+
+3. **Desafío de contexto**: Ejecuta `/context` a mitad de sesión. ¿Cuántos tokens estás usando? Prueba `/compact` y verifica de nuevo. (Consulta [Comprender las ventanas de contexto](#compartir-tu-sesión) en Going Deeper para más sobre `/compact`.)
+
+**Autoevaluación**: Entiendes el contexto cuando puedes explicar por qué `@folder/` es más poderoso que abrir cada archivo individualmente.
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Rastrear el flujo de datos
+
+Los ejemplos prácticos se centraron en revisiones de calidad de código y validación de entradas. Ahora practica las mismas habilidades de contexto en una tarea diferente, rastreando cómo se mueve la información a través de la aplicación:
+
+1. Inicia una sesión interactiva: `copilot`
+2. Referencia `books.py` y `book_app.py` juntos:
+ `@samples/book-app-project/books.py @samples/book-app-project/book_app.py Rastrea cómo un libro pasa desde la entrada del usuario hasta guardarse en data.json. ¿Qué funciones están involucradas en cada paso?`
+3. Añade el archivo de datos para contexto adicional:
+ `@samples/book-app-project/data.json ¿Qué ocurre si este archivo JSON falta o está corrupto? ¿Qué funciones fallarían?`
+4. Pide una mejora entre archivos:
+ `@samples/book-app-project/books.py @samples/book-app-project/utils.py Sugiere una estrategia coherente de manejo de errores que funcione en ambos archivos.`
+5. Renombra la sesión: `/rename data-flow-analysis`
+6. Sal con `/exit`, luego reanuda con `copilot --continue` y haz una pregunta de seguimiento sobre el flujo de datos
+
+**Criterios de éxito**: Puedes rastrear datos a través de múltiples archivos, reanudar una sesión nombrada y obtener sugerencias entre archivos.
+
+
+💡 Pistas (haz clic para expandir)
+
+**Para empezar:**
+```bash
+cd /path/to/copilot-cli-for-beginners
+copilot
+> @samples/book-app-project/books.py @samples/book-app-project/book_app.py Trace how a book goes from user input to being saved in data.json.
+> @samples/book-app-project/data.json What happens if this file is missing or corrupted?
+> /rename data-flow-analysis
+> /exit
+```
+
+Luego reanuda con: `copilot --continue`
+
+**Comandos útiles:**
+- `@file.py` - Referencia un solo archivo
+- `@folder/` - Referencia todos los archivos en una carpeta (nota la barra final `/`)
+- `/context` - Comprueba cuánto contexto estás usando
+- `/rename ` - Nombra tu sesión para reanudarla fácilmente
+
+
+
+### Desafío extra: Límites de contexto
+
+1. Referencia todos los archivos de la app del libro a la vez con `@samples/book-app-project/`
+2. Haz varias preguntas detalladas sobre diferentes archivos (`books.py`, `utils.py`, `book_app.py`, `data.json`)
+3. Ejecuta `/context` para ver el uso. ¿Qué tan rápido se llena?
+4. Practica usar `/compact` para recuperar espacio, luego continúa la conversación
+5. Intenta ser más específico con las referencias de archivos (p. ej., `@samples/book-app-project/books.py` en lugar de la carpeta completa) y observa cómo afecta el uso del contexto
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haz clic para expandir)
+
+### Errores comunes
+
+| Error | Qué ocurre | Solución |
+|---------|--------------|-----|
+| Olvidar `@` antes de los nombres de archivo | Copilot CLI trata "books.py" como texto plano | Usa `@samples/book-app-project/books.py` para referenciar archivos |
+| Esperar que las sesiones persistan automáticamente | Iniciar `copilot` de nuevo pierde todo el contexto previo | Usa `--continue` (última sesión) o `--resume` (elige una sesión) |
+| Referenciar archivos fuera del directorio actual | Errores de "Permiso denegado" o "Archivo no encontrado" | Usa `/add-dir /path/to/directory` para otorgar acceso |
+| No usar `/clear` al cambiar de tema | El contexto antiguo confunde las respuestas sobre el nuevo tema | Ejecuta `/clear` antes de empezar una tarea diferente |
+
+### Solución de problemas
+
+**Errores de "Archivo no encontrado"** - Asegúrate de estar en el directorio correcto:
+
+```bash
+pwd # Comprobar el directorio actual
+ls # Listar archivos
+
+# Luego inicia copilot y usa rutas relativas
+copilot
+
+> Review @samples/book-app-project/books.py
+```
+
+**"Permiso denegado"** - Agrega el directorio a tu lista permitida:
+
+```bash
+copilot --add-dir /path/to/directory
+
+# O en una sesión:
+> /add-dir /path/to/directory
+```
+
+**El contexto se llena demasiado rápido**:
+- Sé más específico con las referencias de archivos
+- Usa `/clear` entre diferentes temas
+- Divide el trabajo en varias sesiones
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **Sintaxis `@`** le da a Copilot CLI contexto sobre archivos, directorios e imágenes
+2. **Conversaciones de varios turnos** se construyen unas sobre otras a medida que el contexto se acumula
+3. **Las sesiones se guardan automáticamente**: nómbralas al inicio con `--name`, reanúdalas por nombre con `--resume=`, o usa `--continue` para retomar la sesión más reciente
+4. **Las ventanas de contexto** tienen límites: adminístralas con `/clear`, `/compact`, `/context`, `/new`, y `/rewind`
+5. **Banderas de permiso** (`--add-dir`, `--allow-all`) controlan el acceso a múltiples directorios. ¡Úsalas con prudencia!
+6. **Referencias de imágenes** (`@screenshot.png`) ayudan a depurar problemas de IU visualmente
+
+> 📚 **Documentación oficial**: [Usar Copilot CLI](https://docs.github.com/copilot/how-tos/copilot-cli/use-copilot-cli) para la referencia completa sobre contexto, sesiones y trabajar con archivos.
+
+> 📋 **Referencia rápida**: Consulta la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+## ➡️ Qué sigue
+
+Ahora que puedes proporcionar contexto a Copilot CLI, pongámoslo a trabajar en tareas de desarrollo reales. Las técnicas de contexto que acabas de aprender (referencias de archivos, análisis entre archivos y gestión de sesiones) son la base para los poderosos flujos de trabajo en el siguiente capítulo.
+
+En **[Capítulo 03: Flujos de trabajo de desarrollo](../03-development-workflows/README.md)**, aprenderás:
+
+- Flujos de trabajo de revisión de código
+- Patrones de refactorización
+- Asistencia para depuración
+- Generación de pruebas
+- Integración con Git
+
+---
+
+**[← Volver al Capítulo 01](../01-setup-and-first-steps/README.md)** | **[Continuar al Capítulo 03 →](../03-development-workflows/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/03-development-workflows/README.md b/translations/es/03-development-workflows/README.md
new file mode 100644
index 00000000..37152c33
--- /dev/null
+++ b/translations/es/03-development-workflows/README.md
@@ -0,0 +1,979 @@
+
+
+> **¿Y si la IA pudiera encontrar errores que ni siquiera sabías preguntar?**
+
+En este capítulo, GitHub Copilot CLI se convierte en tu herramienta diaria. Lo usarás dentro de los flujos de trabajo que ya utilizas todos los días: pruebas, refactorización, depuración y Git.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, podrás:
+
+- Realizar revisiones de código exhaustivas con Copilot CLI
+- Refactorizar código heredado de forma segura
+- Depurar problemas con asistencia de IA
+- Generar pruebas automáticamente
+- Integrar Copilot CLI en tu flujo de trabajo con git
+
+> ⏱️ **Tiempo estimado**: ~60 minutos (15 min lectura + 45 min práctica)
+
+---
+
+## 🧩 Analogía del mundo real: El flujo de trabajo de un carpintero
+
+Un carpintero no solo sabe usar herramientas, tiene *flujos de trabajo* para diferentes tareas:
+
+
+
+De manera similar, los desarrolladores tienen flujos de trabajo para diferentes tareas. GitHub Copilot CLI mejora cada uno de estos flujos, haciéndote más eficiente y efectivo en tus tareas de codificación diarias.
+
+---
+
+# Los cinco flujos de trabajo
+
+
+
+Cada flujo de trabajo a continuación es autónomo. Elige los que coincidan con tus necesidades actuales, o recórrelos todos.
+
+---
+
+## Elige tu propia aventura
+
+Este capítulo cubre cinco flujos de trabajo que los desarrolladores suelen usar. **¡Sin embargo, no necesitas leerlos todos de una vez!** Cada flujo de trabajo es autónomo en una sección desplegable más abajo. Elige los que coincidan con lo que necesitas y lo que mejor se adapte a tu proyecto actual. Siempre puedes volver y explorar los demás más tarde.
+
+
+
+| Quiero... | Ir a |
+|---|---|
+| Revisar código antes de fusionar | [Flujo de trabajo 1: Revisión de código](#workflow-1-code-review) |
+| Limpiar código desordenado o heredado | [Flujo de trabajo 2: Refactorización](#workflow-2-refactoring) |
+| Localizar y corregir un error | [Flujo de trabajo 3: Depuración](#workflow-3-debugging) |
+| Generar pruebas para mi código | [Flujo de trabajo 4: Generación de pruebas](#workflow-4-test-generation) |
+| Escribir mejores commits y PRs | [Flujo de trabajo 5: Integración con Git](#workflow-5-git-integration) |
+| Investigar antes de codificar | [Consejo rápido: Investiga antes de planificar o codificar](#revisar-antes-de-hacer-push) |
+| Ver un flujo de trabajo de corrección de errores completo de principio a fin | [Uniéndolo todo](#usar-delegate-para-tareas-en-segundo-plano) |
+
+**Selecciona un flujo de trabajo abajo para expandirlo** y ver cómo GitHub Copilot CLI puede mejorar tu proceso de desarrollo en esa área.
+
+---
+
+
+
+Flujo de trabajo 1: Revisión de código - Revisar archivos, usar el agente /review, crear listas de verificación por severidad
+
+
+
+### Revisión básica
+
+Este ejemplo utiliza el símbolo `@` para referenciar un archivo, dando a Copilot CLI acceso directo a su contenido para su revisión.
+
+```bash
+copilot
+
+> Review @samples/book-app-project/book_app.py for code quality
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+### Revisión de validación de entrada
+
+Pide a Copilot CLI que centre su revisión en una preocupación específica (aquí, la validación de entrada) enumerando en el prompt las categorías que te importan.
+
+```text
+copilot
+
+> Review @samples/book-app-project/utils.py for input validation issues. Check for: missing validation, error handling gaps, and edge cases
+```
+
+
+### Revisión del proyecto entre archivos
+
+Referencia un directorio entero con `@` para permitir que Copilot CLI escanee todos los archivos del proyecto a la vez.
+
+```bash
+copilot
+
+> @samples/book-app-project/ Review this entire project. Create a markdown checklist of issues found, categorized by severity
+```
+
+### Revisión de código interactiva
+
+Usa una conversación de varios turnos para profundizar. Comienza con una revisión general y luego haz preguntas de seguimiento sin reiniciar.
+
+```bash
+copilot
+
+> @samples/book-app-project/book_app.py Review this file for:
+> - Input validation
+> - Error handling
+> - Code style and best practices
+
+# Copilot CLI proporciona una revisión detallada
+
+> The user input handling - are there any edge cases I'm missing?
+
+# Copilot CLI muestra problemas potenciales con cadenas vacías y caracteres especiales
+
+> Create a checklist of all issues found, prioritized by severity
+
+# Copilot CLI genera elementos de acción priorizados
+```
+
+### Plantilla de lista de verificación de revisión
+
+Pide a Copilot CLI que estructure su salida en un formato específico (aquí, una lista de verificación en markdown categorizada por severidad que puedes pegar en un issue).
+
+```bash
+copilot
+
+> Review @samples/book-app-project/ and create a markdown checklist of issues found, categorized by:
+> - Critical (data loss risks, crashes)
+> - High (bugs, incorrect behavior)
+> - Medium (performance, maintainability)
+> - Low (style, minor improvements)
+```
+
+### Entender los cambios en Git (Importante para /review)
+
+Antes de usar el comando `/review`, necesitas comprender dos tipos de cambios en git:
+
+| Tipo de cambio | Qué significa | Cómo verlo |
+|-------------|---------------|------------|
+| **Cambios preparados (staged)** | Archivos que has marcado para el siguiente commit con `git add` | `git diff --staged` |
+| **Cambios no preparados (unstaged)** | Archivos que has modificado pero que aún no has añadido | `git diff` |
+
+```bash
+# Referencia rápida
+git status # Muestra tanto los cambios preparados como los no preparados
+git add file.py # Preparar un archivo para el commit
+git diff # Muestra los cambios no preparados
+git diff --staged # Muestra los cambios preparados
+```
+
+### Usar el comando /review
+
+El comando `/review` invoca el integrado **agente de revisión de código**, que está optimizado para analizar cambios preparados y no preparados con una salida de alta relación señal-ruido. Usa un comando con barra para activar un agente integrado especializado en lugar de escribir un prompt de forma libre.
+
+```bash
+copilot
+
+> /review
+# Invoca al agente de revisión de código sobre cambios preparados o no preparados
+# Proporciona retroalimentación enfocada y accionable
+
+> /review Check for security issues in authentication
+# Ejecuta la revisión con un área de enfoque específica
+```
+
+> 💡 **Consejo**: El agente de revisión de código funciona mejor cuando tienes cambios pendientes. Prepara tus archivos con `git add` para revisiones más enfocadas.
+
+
+
+---
+
+
+
+Flujo de trabajo 2: Refactorización - Reestructurar código, separar responsabilidades, mejorar el manejo de errores
+
+
+
+### Refactorización simple
+
+> **Prueba esto primero:** `@samples/book-app-project/book_app.py El manejo de comandos usa cadenas if/elif. Refactorízalo para usar un patrón de despacho con diccionario.`
+
+Comienza con mejoras sencillas. Pruébalas en la aplicación de libros. Cada prompt usa una referencia de archivo `@` combinada con una instrucción de refactorización específica para que Copilot CLI sepa exactamente qué cambiar.
+
+```bash
+copilot
+
+> @samples/book-app-project/book_app.py The command handling uses if/elif chains. Refactor it to use a dictionary dispatch pattern.
+
+> @samples/book-app-project/utils.py Add type hints to all functions
+
+> @samples/book-app-project/book_app.py Extract the book display logic into utils.py for better separation of concerns
+```
+
+> 💡 **¿Nuevo en refactorización?** Empieza con peticiones sencillas como añadir anotaciones de tipo o mejorar nombres de variables antes de abordar transformaciones complejas.
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+### Separar responsabilidades
+
+Referencia múltiples archivos con `@` en un único prompt para que Copilot CLI pueda mover código entre ellos como parte del refactor.
+
+```bash
+copilot
+
+> @samples/book-app-project/utils.py @samples/book-app-project/book_app.py
+> The utils.py file has print statements mixed with logic. Refactor to separate display functions from data processing.
+```
+
+### Mejorar el manejo de errores
+
+Proporciona dos archivos relacionados y describe la preocupación transversal para que Copilot CLI pueda sugerir una solución consistente en ambos.
+
+```bash
+copilot
+
+> @samples/book-app-project/utils.py @samples/book-app-project/books.py
+> These files have inconsistent error handling. Suggest a unified approach using custom exceptions.
+```
+
+### Agregar documentación
+
+Usa una lista de viñetas detallada para especificar exactamente qué debe contener cada docstring.
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Add comprehensive docstrings to all methods:
+> - Include parameter types and descriptions
+> - Document return values
+> - Note any exceptions raised
+> - Add usage examples
+```
+
+### Refactorización segura con pruebas
+
+Encadena dos peticiones relacionadas en una conversación de varios turnos. Primero genera pruebas, luego refactoriza con esas pruebas como red de seguridad.
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Before refactoring, generate tests for current behavior
+
+# Escribe las pruebas primero
+
+> Now refactor the BookCollection class to use a context manager for file operations
+
+# Refactoriza con confianza - las pruebas verifican que el comportamiento se mantiene
+```
+
+
+
+---
+
+
+
+Flujo de trabajo 3: Depuración - Localizar errores, auditorías de seguridad, rastrear problemas entre archivos
+
+
+
+### Depuración simple
+
+> **Prueba esto primero:** `@samples/book-app-buggy/books_buggy.py Usuarios reportan que buscar "The Hobbit" no devuelve resultados aunque esté en los datos. Depura por qué.`
+
+Comienza describiendo lo que está mal. Aquí hay patrones comunes de depuración que puedes probar con la aplicación de libros con errores. Cada prompt empareja una referencia de archivo `@` con una descripción clara del síntoma para que Copilot CLI pueda localizar y diagnosticar el error.
+
+```bash
+copilot
+
+# Patrón: "Se esperaba X pero se obtuvo Y"
+> @samples/book-app-buggy/books_buggy.py Users report that searching for "The Hobbit" returns no results even though it's in the data. Debug why.
+
+# Patrón: "Comportamiento inesperado"
+> @samples/book-app-buggy/book_app_buggy.py When I remove a book that doesn't exist, the app says it was removed. Help me find why.
+
+# Patrón: "Resultados incorrectos"
+> @samples/book-app-buggy/books_buggy.py When I mark one book as read, ALL books get marked. What's the bug?
+```
+
+> 💡 **Consejo de depuración**: Describe el *síntoma* (lo que ves) y la *expectativa* (lo que debería ocurrir). Copilot CLI se encarga del resto.
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+### El "Detective de errores" - La IA encuentra ERRORES RELACIONADOS
+
+Aquí es donde la depuración con conciencia de contexto brilla. Prueba este escenario con la aplicación de libros con errores. Proporciona todo el archivo vía `@` y describe solo el síntoma reportado por el usuario. Copilot CLI seguirá la causa raíz y puede detectar errores adicionales cercanos.
+
+```bash
+copilot
+
+> @samples/book-app-buggy/books_buggy.py
+>
+> Users report: "Finding books by author name doesn't work for partial names"
+> Debug why this happens
+```
+
+**Lo que hace Copilot CLI**:
+```
+Root Cause: Line 80 uses exact match (==) instead of partial match (in).
+
+Line 80: return [b for b in self.books if b.author == author]
+
+The find_by_author function requires an exact match. Searching for "Tolkien"
+won't find books by "J.R.R. Tolkien".
+
+Fix: Change to case-insensitive partial match:
+return [b for b in self.books if author.lower() in b.author.lower()]
+```
+
+**Por qué importa**: Copilot CLI lee todo el archivo, entiende el contexto de tu informe de error y te da una corrección específica con una explicación clara.
+
+> 💡 **Bonus**: Debido a que Copilot CLI analiza el archivo completo, a menudo descubre *otros* problemas que no solicitaste. Por ejemplo, mientras arregla la búsqueda por autor, Copilot CLI también podría notar el error de sensibilidad a mayúsculas en `find_book_by_title`!
+
+### Nota de seguridad en el mundo real
+
+Aunque depurar tu propio código es importante, entender las vulnerabilidades de seguridad en aplicaciones en producción es crítico. Prueba este ejemplo: Indica a Copilot CLI un archivo desconocido y pídele que lo audite en busca de problemas de seguridad.
+
+```bash
+copilot
+
+> @samples/buggy-code/python/user_service.py Find all security vulnerabilities in this Python user service
+```
+
+Este archivo demuestra patrones de seguridad del mundo real que encontrarás en aplicaciones en producción.
+
+> 💡 **Términos comunes de seguridad que encontrarás:**
+> - **SQL Injection (Inyección SQL)**: Cuando la entrada del usuario se coloca directamente en una consulta de base de datos, permitiendo que atacantes ejecuten comandos maliciosos
+> - **Consultas parametrizadas**: La alternativa segura: los marcadores (`?`) separan los datos del usuario de los comandos SQL
+> - **Condición de carrera**: Cuando dos operaciones ocurren al mismo tiempo e interfieren entre sí
+> - **XSS (Cross-Site Scripting)**: Cuando los atacantes inyectan scripts maliciosos en páginas web
+
+---
+
+### Entender un error
+
+Pega un stack trace directamente en tu prompt junto con una referencia de archivo `@` para que Copilot CLI pueda mapear el error al código fuente.
+
+```bash
+copilot
+
+> I'm getting this error:
+> AttributeError: 'NoneType' object has no attribute 'title'
+> at show_books (book_app.py:19)
+>
+> @samples/book-app-project/book_app.py Explain why and how to fix it
+```
+
+### Depuración con caso de prueba
+
+Describe la entrada exacta y la salida observada para dar a Copilot CLI un caso de prueba concreto y reproducible sobre el que razonar.
+
+```bash
+copilot
+
+> @samples/book-app-buggy/books_buggy.py The remove_book function has a bug. When I try to remove "Dune",
+> it also removes "Dune Messiah". Debug this: explain the root cause and provide a fix.
+```
+
+### Rastrear un problema a través del código
+
+Referencia múltiples archivos y pide a Copilot CLI que siga el flujo de datos a través de ellos para localizar dónde se origina el problema.
+
+```bash
+copilot
+
+> Users report that the book list numbering starts at 0 instead of 1.
+> @samples/book-app-buggy/book_app_buggy.py @samples/book-app-buggy/books_buggy.py
+> Trace through the list display flow and identify where the issue occurs
+```
+
+### Entender problemas con datos
+
+Incluye un archivo de datos junto con el código que lo lee para que Copilot CLI entienda el panorama completo al sugerir mejoras en el manejo de errores.
+
+```bash
+copilot
+
+> @samples/book-app-project/data.json @samples/book-app-project/books.py
+> Sometimes the JSON file gets corrupted and the app crashes. How should we handle this gracefully?
+```
+
+
+
+---
+
+
+
+Flujo de trabajo 4: Generación de pruebas - Generar pruebas exhaustivas y casos límite automáticamente
+
+
+
+> **Prueba esto primero:** `@samples/book-app-project/books.py Genera pruebas pytest para todas las funciones, incluidos casos límite`
+
+### La "Explosión de pruebas" - 2 pruebas vs 15+ pruebas
+
+Al escribir pruebas manualmente, los desarrolladores normalmente crean 2-3 pruebas básicas:
+- Probar entrada válida
+- Probar entrada inválida
+- Probar un caso límite
+
+Observa lo que ocurre cuando pides a Copilot CLI que genere pruebas exhaustivas. Este prompt utiliza una lista estructurada de viñetas con una referencia de archivo `@` para guiar a Copilot CLI hacia una cobertura de pruebas completa:
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Generate comprehensive pytest tests. Include tests for:
+> - Adding books
+> - Removing books
+> - Finding by title
+> - Finding by author
+> - Marking as read
+> - Edge cases with empty data
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demostración varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+---
+
+**Qué obtienes**: 15+ pruebas exhaustivas que incluyen:
+
+```python
+class TestBookCollection:
+ # Camino feliz
+ def test_add_book_creates_new_book(self):
+ ...
+ def test_list_books_returns_all_books(self):
+ ...
+
+ # Operaciones de búsqueda
+ def test_find_book_by_title_case_insensitive(self):
+ ...
+ def test_find_book_by_title_returns_none_when_not_found(self):
+ ...
+ def test_find_by_author_partial_match(self):
+ ...
+ def test_find_by_author_case_insensitive(self):
+ ...
+
+ # Casos límite
+ def test_add_book_with_empty_title(self):
+ ...
+ def test_remove_nonexistent_book(self):
+ ...
+ def test_mark_as_read_nonexistent_book(self):
+ ...
+
+ # Persistencia de datos
+ def test_save_books_persists_to_json(self):
+ ...
+ def test_load_books_handles_missing_file(self):
+ ...
+ def test_load_books_handles_corrupted_json(self):
+ ...
+
+ # Caracteres especiales
+ def test_add_book_with_unicode_characters(self):
+ ...
+ def test_find_by_author_with_special_characters(self):
+ ...
+```
+
+**Resultado**: En 30 segundos, obtienes pruebas de casos límite que te tomarían una hora pensar y escribir.
+
+---
+
+### Pruebas unitarias
+
+Apunta a una sola función y enumera las categorías de entrada que quieres que se prueben para que Copilot CLI genere pruebas unitarias enfocadas y exhaustivas.
+
+```bash
+copilot
+
+> @samples/book-app-project/utils.py Generate comprehensive pytest tests for get_book_details covering:
+> - Valid input
+> - Empty strings
+> - Invalid year formats
+> - Very long titles
+> - Special characters in author names
+```
+
+### Ejecutar pruebas
+
+Hazle a Copilot CLI una pregunta en lenguaje natural sobre tu cadena de herramientas. Puede generar el comando de shell correcto para ti.
+
+```bash
+copilot
+
+> How do I run the tests? Show me the pytest command.
+
+# Copilot CLI responde:
+# cd samples/book-app-project && python -m pytest tests/
+# O para salida detallada: python -m pytest tests/ -v
+# Para ver las sentencias print: python -m pytest tests/ -s
+```
+
+### Probar escenarios específicos
+
+Enumera escenarios avanzados o complicados que quieras cubrir para que Copilot CLI vaya más allá del camino feliz.
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Generate tests for these scenarios:
+> - Adding duplicate books (same title and author)
+> - Removing a book by partial title match
+> - Finding books when collection is empty
+> - File permission errors during save
+> - Concurrent access to the book collection
+```
+
+### Agregar pruebas al archivo existente
+
+Pide pruebas *adicionales* para una sola función para que Copilot CLI genere nuevos casos que complementen los que ya tienes.
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py
+> Generate additional tests for the find_by_author function with edge cases:
+> - Author name with hyphens (e.g., "Jean-Paul Sartre")
+> - Author with multiple first names
+> - Empty string as author
+> - Author name with accented characters
+```
+
+
+
+---
+
+
+
+Flujo de trabajo 5: Integración con Git - Mensajes de commit, descripciones de PR, /pr, /delegate y /diff
+
+
+
+> 💡 **Este flujo de trabajo asume familiaridad básica con git** (preparación de cambios, commits, ramas). Si git es nuevo para ti, prueba primero los otros cuatro flujos de trabajo.
+
+### Generar mensajes de commit
+
+> **Prueba esto primero:** `copilot -p "Generate a conventional commit message for: $(git diff --staged)"` — prepara algunos cambios, luego ejecuta esto para ver a Copilot CLI redactar tu mensaje de commit.
+
+This example uses the `-p` inline prompt flag with shell command substitution to pipe `git diff` output directly into Copilot CLI for a one-shot commit message. The `$(...)` syntax runs the command inside the parentheses and inserts its output into the outer command.
+
+```bash
+
+# Ver qué cambió
+git diff --staged
+
+# Generar mensaje de commit usando el formato [Conventional Commit](../GLOSSARY.md#conventional-commit)
+# (mensajes estructurados como "feat(books): add search" o "fix(data): handle empty input")
+copilot -p "Generate a conventional commit message for: $(git diff --staged)"
+
+# Salida: "feat(books): añadir búsqueda parcial por nombre de autor
+#
+# - Actualizar find_by_author para admitir coincidencias parciales
+# - Añadir comparación sin distinción entre mayúsculas y minúsculas
+# - Mejorar la experiencia del usuario al buscar autores"
+```
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas diferirán de lo mostrado aquí.*
+
+
+
+---
+
+### Explicar los cambios
+
+Canaliza la salida de `git show` en un prompt `-p` para obtener un resumen en lenguaje sencillo del último commit.
+
+```bash
+# ¿Qué cambió este commit?
+copilot -p "Explain what this commit does: $(git show HEAD --stat)"
+```
+
+### Descripción del PR
+
+Combina la salida de `git log` con una plantilla de prompt estructurada para autogenerar una descripción completa del pull request.
+
+```bash
+# Generar la descripción del PR a partir de los cambios en la rama
+copilot -p "Generate a pull request description for these changes:
+$(git log main..HEAD --oneline)
+
+Include:
+- Summary of changes
+- Why these changes were made
+- Testing done
+- Breaking changes? (yes/no)"
+```
+
+### Usar /pr en el modo interactivo para la rama actual
+
+Si estás trabajando con una rama en el modo interactivo de Copilot CLI, puedes usar el comando `/pr` para trabajar con pull requests. Usa `/pr` para ver un PR, crear uno nuevo, arreglar un PR existente o dejar que Copilot CLI decida automáticamente según el estado de la rama.
+
+```bash
+copilot
+
+> /pr [view|create|fix|auto]
+```
+
+### Revisar antes de hacer push
+
+Usa `git diff main..HEAD` dentro de un prompt `-p` para una comprobación rápida previa al push de todos los cambios de la rama.
+
+```bash
+# Última comprobación antes de hacer push
+copilot -p "Review these changes for issues before I push:
+$(git diff main..HEAD)"
+```
+
+### Usar /delegate para tareas en segundo plano
+
+El comando `/delegate` delega trabajo al agente en la nube de GitHub Copilot. Usa el comando slash `/delegate` (o el atajo `&`) para descargar una tarea bien definida a un agente en segundo plano.
+
+```bash
+copilot
+
+> /delegate Add input validation to the login form
+
+# O usa el atajo de prefijo &:
+> & Fix the typo in the README header
+
+# Copilot CLI:
+# 1. Confirma tus cambios en una nueva rama
+# 2. Abre una pull request en borrador
+# 3. Trabaja en segundo plano en GitHub
+# 4. Solicita tu revisión cuando termine
+```
+
+Esto es ideal para tareas bien definidas que quieras completar mientras te concentras en otro trabajo.
+
+### Usar /diff para revisar los cambios de la sesión
+
+El comando `/diff` muestra todos los cambios realizados durante tu sesión actual. Usa este comando slash para ver un diff visual de todo lo que Copilot CLI ha modificado antes de que hagas commit.
+
+```bash
+copilot
+
+# Después de hacer algunos cambios...
+> /diff
+
+# Muestra una comparación visual de todos los archivos modificados en esta sesión
+# Ideal para revisar antes de confirmar
+```
+
+
+
+---
+
+## Consejo rápido: Investiga antes de planificar o codificar
+
+Cuando necesites investigar una biblioteca, entender las mejores prácticas o explorar un tema desconocido, usa `/research` para realizar una investigación profunda antes de escribir código:
+
+```bash
+copilot
+
+> /research What are the best Python libraries for validating user input in CLI apps?
+```
+
+Copilot searches GitHub repositories and web sources, then returns a summary with references. This is useful when you're about to start a new feature and want to make informed decisions first. You can share the results using `/share`.
+
+> 💡 **Consejo**: `/research` funciona bien *antes de* `/plan`. Investiga el enfoque, luego planifica la implementación.
+
+---
+
+## Juntándolo todo: Flujo de trabajo para corregir errores
+
+Aquí tienes un flujo de trabajo completo para corregir un bug reportado:
+
+```bash
+
+# 1. Entender el informe de errores
+copilot
+
+> Users report: 'Finding books by author name doesn't work for partial names'
+> @samples/book-app-project/books.py Analyze and identify the likely cause
+
+# 2. Depurar el problema y corregirlo (continuando en la misma sesión)
+> Based on the analysis, show me the find_by_author function and explain the issue
+
+> Fix the find_by_author function to handle partial name matches
+
+# 3. Generar pruebas para la corrección
+> @samples/book-app-project/books.py Generate pytest tests specifically for:
+> - Full author name match
+> - Partial author name match
+> - Case-insensitive matching
+> - Author name not found
+
+# Salir de la sesión interactiva
+
+> /exit
+
+# 4. Ejecutar git add
+
+# Poner los cambios en el área de preparación para que git diff --staged tenga algo con lo que trabajar
+git add .
+
+# 5. Generar mensaje de commit
+copilot -p "Generate commit message for: $(git diff --staged)"
+
+# Ejemplo de salida: "fix(books): soportar búsqueda parcial por nombre de autor"
+
+# 6. Confirmar los cambios (opcional)
+
+git commit -m ""
+```
+
+### Resumen del flujo de trabajo para corrección de errores
+
+| Paso | Acción | Comando de Copilot |
+|------|--------|-----------------|
+| 1 | Entender el bug | `> [describe bug] @relevant-file.py Analyze the likely cause` |
+| 2 | Análisis y corrección | `> Show me the function and fix the issue` |
+| 3 | Generar pruebas | `> Generate tests for [specific scenarios]` |
+| 4 | Preparar cambios | `git add .` |
+| 5 | Generar mensaje de commit | `copilot -p "Generate commit message for: $(git diff --staged)"` |
+| 6 | Hacer commit de los cambios| `git commit -m ""` |
+
+---
+
+# Práctica
+
+
+
+Ahora es tu turno para aplicar estos flujos de trabajo.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+Después de completar las demostraciones, prueba estas variaciones:
+
+1. **Desafío Detective de Bugs**: Pide a Copilot CLI que depure la función `mark_as_read` en `samples/book-app-buggy/books_buggy.py`. ¿Explicó por qué la función marca TODOS los libros como leídos en lugar de solo uno?
+
+2. **Desafío de Pruebas**: Genera pruebas para la función `add_book` en la aplicación de libros. Cuenta cuántos casos límite incluye Copilot CLI que no hubieras pensado.
+
+3. **Desafío Mensaje de Commit**: Haz cualquier pequeño cambio en un archivo de la app de libros, índexalo (`git add .`), luego ejecuta:
+ ```bash
+ copilot -p "Generate a conventional commit message for: $(git diff --staged)"
+ ```
+ ¿Es el mensaje mejor de lo que habrías escrito rápidamente?
+
+**Autoevaluación**: Comprendes los flujos de trabajo de desarrollo cuando puedes explicar por qué "depurar este bug" es más poderoso que "encontrar bugs" (¡el contexto importa!).
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Refactorizar, probar y entregar
+
+Los ejemplos prácticos se centraron en `find_book_by_title` y revisiones de código. Ahora practica las mismas habilidades de flujo de trabajo en diferentes funciones en `book-app-project`:
+
+1. **Revisión**: Pide a Copilot CLI que revise `remove_book()` en `books.py` en busca de casos límite y posibles problemas:
+ `@samples/book-app-project/books.py Review the remove_book() function. What happens if the title partially matches another book (e.g., "Dune" vs "Dune Messiah")? Are there any edge cases not handled?`
+2. **Refactorizar**: Pide a Copilot CLI que mejore `remove_book()` para manejar casos límite como coincidencia sin distinción de mayúsculas/minúsculas y devolver retroalimentación útil cuando no se encuentra un libro
+3. **Prueba**: Genera pruebas pytest específicamente para la función `remove_book()` mejorada, cubriendo:
+ - Eliminar un libro que existe
+ - Coincidencia de título sin distinción de mayúsculas/minúsculas
+ - Un libro que no existe devuelve retroalimentación apropiada
+ - Eliminar de una colección vacía
+4. **Revisión**: Prepara tus cambios y ejecuta `/review` para comprobar si quedan problemas
+5. **Commit**: Genera un mensaje de commit convencional:
+ `copilot -p "Generate a conventional commit message for: $(git diff --staged)"`
+
+
+💡 Consejos (haz clic para expandir)
+
+**Prompts de ejemplo para cada paso:**
+
+```bash
+copilot
+
+# Paso 1: Revisar
+> @samples/book-app-project/books.py Review the remove_book() function. What edge cases are not handled?
+
+# Paso 2: Refactorizar
+> Improve remove_book() to use case-insensitive matching and return a clear message when the book isn't found. Show me the before and after code.
+
+# Paso 3: Probar
+> Generate pytest tests for the improved remove_book() function, including:
+> - Removing a book that exists
+> - Case-insensitive matching ("dune" should remove "Dune")
+> - Book not found returns appropriate response
+> - Removing from an empty collection
+
+# Paso 4: Revisar
+> /review
+
+# Paso 5: Confirmar
+> Generate a conventional commit message for this refactor
+```
+
+**Tip:** After improving `remove_book()`, try asking Copilot CLI: "Are there any other functions in this file that could benefit from the same improvements?". It may suggest similar changes to `find_book_by_title()` or `find_by_author()`.
+
+
+
+### Bonus Challenge: Create an application with the Copilot CLI
+
+> 💡 **Nota**: Este ejercicio de GitHub Skills usa **Node.js** en lugar de Python. Las técnicas de GitHub Copilot CLI que practicarás - crear issues, generar código y colaborar desde la terminal - se aplican a cualquier lenguaje.
+
+El ejercicio muestra a los desarrolladores cómo usar GitHub Copilot CLI para crear issues, generar código y colaborar desde la terminal mientras construyen una calculadora en Node.js. Instalarás la CLI, usarás plantillas y agentes, y practicarás desarrollo iterativo impulsado por la línea de comandos.
+
+#####
[Comienza el ejercicio de Skills "Crear aplicaciones con Copilot CLI"](https://github.com/skills/create-applications-with-the-copilot-cli)
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haz clic para expandir)
+
+### Errores comunes
+
+| Error | Qué sucede | Solución |
+|---------|--------------|-----|
+| Usar indicaciones vagas como "Revisa este código" | Comentarios genéricos que pasan por alto problemas específicos | Sé específico: "Revisa inyección SQL, XSS y problemas de autenticación" |
+| No usar `/review` para revisiones de código | Falta el agente de revisión de código optimizado | Usa `/review`, que está afinado para obtener una salida con alta relación señal-ruido |
+| Pedir "encontrar bugs" sin contexto | Copilot CLI no sabe qué bug estás experimentando | Describe el síntoma: "Los usuarios informan que X sucede cuando Y" |
+| Generar pruebas sin especificar el framework | Las pruebas pueden usar la sintaxis o biblioteca de aserciones equivocada | Especifica: "Generar pruebas usando Jest" o "usando pytest" |
+
+### Solución de problemas
+
+**La revisión parece incompleta** - Sé más específico sobre qué buscar:
+
+```bash
+copilot
+
+# En lugar de:
+> Review @samples/book-app-project/book_app.py
+
+# Prueba:
+> Review @samples/book-app-project/book_app.py for input validation, error handling, and edge cases
+```
+
+**Las pruebas no coinciden con mi framework** - Especifica el framework:
+
+```bash
+copilot
+
+> @samples/book-app-project/books.py Generate tests using pytest (not unittest)
+```
+
+**El refactor altera el comportamiento** - Pide a Copilot CLI que preserve el comportamiento:
+
+```bash
+copilot
+
+> @samples/book-app-project/book_app.py Refactor command handling to use dictionary dispatch. IMPORTANT: Maintain identical external behavior - no breaking changes
+```
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+
+
+1. La **revisión de código** se vuelve más completa con prompts específicos
+2. La **refactorización** es más segura cuando generas pruebas primero
+3. La **depuración** se beneficia de mostrar a Copilot CLI el error Y el código
+4. La **generación de pruebas** debe incluir casos límite y escenarios de error
+5. La **integración con Git** automatiza mensajes de commit y descripciones de PR
+
+> 📋 **Referencia rápida**: Consulta la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+## ✅ Punto de control: Has dominado lo esencial
+
+**¡Felicidades!** Ahora tienes todas las habilidades básicas para ser productivo con GitHub Copilot CLI:
+
+| Habilidad | Capítulo | Ahora puedes... |
+|-------|---------|----------------|
+| Comandos básicos | Cap 01 | Usar modo interactivo, modo plan, modo programático (-p) y comandos slash |
+| Contexto | Cap 02 | Referenciar archivos con `@`, gestionar sesiones, entender ventanas de contexto |
+| Flujos de trabajo | Cap 03 | Revisar código, refactorizar, depurar, generar pruebas, integrar con git |
+
+Los capítulos 04-06 cubren funciones adicionales que añaden aún más potencia y vale la pena aprender.
+
+---
+
+## 🛠️ Construyendo tu flujo de trabajo personal
+
+No existe una única forma "correcta" de usar GitHub Copilot CLI. Aquí tienes algunos consejos mientras desarrollas tus propios patrones:
+
+> 📚 **Documentación oficial**: [Buenas prácticas de Copilot CLI](https://docs.github.com/copilot/how-tos/copilot-cli/cli-best-practices) para flujos de trabajo recomendados y consejos de GitHub.
+
+- **Comienza con `/plan`** para cualquier tarea no trivial. Refina el plan antes de ejecutarlo - un buen plan conduce a mejores resultados.
+- **Guarda los prompts que funcionen bien.** Cuando Copilot CLI cometa un error, anota qué salió mal. Con el tiempo, esto se convierte en tu manual personal.
+- **Experimenta libremente.** Algunos desarrolladores prefieren prompts largos y detallados. Otros prefieren prompts cortos con seguimientos. Prueba diferentes enfoques y observa qué te resulta natural.
+
+> 💡 **Próximamente**: En los capítulos 04 y 05 aprenderás a codificar tus mejores prácticas en instrucciones y skills personalizadas que Copilot CLI cargará automáticamente.
+
+---
+
+## ➡️ Qué sigue
+
+Los capítulos restantes cubren funciones adicionales que amplían las capacidades de Copilot CLI:
+
+| Capítulo | Qué cubre | Cuándo lo querrás |
+|---------|----------------|---------------------|
+| Cap 04: Agentes | Crear 'personas' de IA especializadas | Cuando quieras expertos de dominio (frontend, seguridad) |
+| Cap 05: Skills | Cargar automáticamente instrucciones para tareas | Cuando repites las mismas indicaciones con frecuencia |
+| Cap 06: MCP | Conectar servicios externos | Cuando necesites datos en vivo de GitHub, bases de datos |
+
+**Recomendación**: Prueba los flujos de trabajo principales durante una semana, luego vuelve a los capítulos 04-06 cuando tengas necesidades específicas.
+
+---
+
+## Continúa con temas adicionales
+
+En **[Capítulo 04: Agentes e instrucciones personalizadas](../04-agents-custom-instructions/README.md)**, aprenderás:
+
+- Usar agentes integrados (`/plan`, `/review`)
+- Crear agentes especializados (experto en frontend, auditor de seguridad) con archivos `.agent.md`
+- Patrones de colaboración multiagente
+- Archivos de instrucciones personalizadas para estándares del proyecto
+
+---
+
+**[← Volver al Capítulo 02](../02-context-conversations/README.md)** | **[Continuar al Capítulo 04 →](../04-agents-custom-instructions/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/04-agents-custom-instructions/README.md b/translations/es/04-agents-custom-instructions/README.md
new file mode 100644
index 00000000..6fa9a55c
--- /dev/null
+++ b/translations/es/04-agents-custom-instructions/README.md
@@ -0,0 +1,815 @@
+
+
+> **¿Y si pudieras contratar a un revisor de código Python, un experto en pruebas y un revisor de seguridad... todo en una sola herramienta?**
+
+En el Capítulo 03 dominaste los flujos de trabajo esenciales: revisión de código, refactorización, depuración, generación de pruebas e integración con git. Eso te hace muy productivo con GitHub Copilot CLI. Ahora, llevémoslo más allá.
+
+Hasta ahora, has estado usando Copilot CLI como un asistente de propósito general. Los agentes te permiten darle una persona específica con estándares integrados, como un revisor de código que hace cumplir las anotaciones de tipo y PEP 8, o un ayudante de pruebas que escribe casos con pytest. Verás cómo el mismo prompt obtiene resultados notablemente mejores cuando lo maneja un agente con instrucciones dirigidas.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, podrás:
+
+- Usar agentes incorporados: Plan (`/plan`), Code-review (`/review`), y entender agentes automáticos (Explore, Task)
+- Crear agentes especializados usando archivos de agente (`.agent.md`)
+- Usar agentes para tareas específicas del dominio
+- Cambiar entre agentes usando `/agent` y `--agent`
+- Escribir archivos de instrucciones personalizadas para estándares específicos del proyecto
+
+> ⏱️ **Tiempo estimado**: ~55 minutos (20 min de lectura + 35 min práctico)
+
+---
+
+## 🧩 Analogía del mundo real: Contratar especialistas
+
+Cuando necesitas ayuda con tu casa, no llamas a un "ayudante general". Llamas a especialistas:
+
+| Problema | Especialista | Por qué |
+|---------|------------|-----|
+| Tubería con fuga | Fontanero | Conoce los códigos de fontanería, tiene herramientas especializadas |
+| Recableado | Electricista | Entiende los requisitos de seguridad, cumple la normativa |
+| Techo nuevo | Especialista en techos | Conoce los materiales y las consideraciones climáticas locales |
+
+Los agentes funcionan de la misma manera. En lugar de una IA genérica, usa agentes que se centran en tareas específicas y conocen el proceso correcto a seguir. Configura las instrucciones una vez y reutilízalas siempre que necesites esa especialidad: revisión de código, pruebas, seguridad, documentación.
+
+
+
+---
+
+# Uso de agentes
+
+Comienza con agentes incorporados y personalizados de inmediato.
+
+---
+
+## *¿Nuevo en agentes?* Empieza aquí!
+¿Nunca has usado o creado un agente? Aquí tienes todo lo que necesitas saber para comenzar en este curso.
+
+1. **Prueba un agente *incorporado* ahora mismo:**
+ ```bash
+ copilot
+ > /plan Add input validation for book year in the book app
+ ```
+ Esto invoca al agente Plan para crear un plan de implementación paso a paso.
+
+2. **Mira uno de nuestros ejemplos de agentes personalizados:** Es sencillo definir las instrucciones de un agente, mira nuestro archivo proporcionado [python-reviewer.agent.md](../../../.github/agents/python-reviewer.agent.md) para ver el patrón.
+
+3. **Entiende el concepto central:** Los agentes son como consultar a un especialista en lugar de a un generalista. Un "frontend agent" se enfocará automáticamente en accesibilidad y patrones de componentes; no tienes que recordárselo porque ya está especificado en las instrucciones del agente.
+
+
+## Agentes incorporados
+
+**¡Ya has usado algunos agentes incorporados en el Capítulo 03 Development Workflow!**
+
`/plan` y `/review` son, en realidad, agentes incorporados. Ahora sabes qué ocurre detrás de escena. Aquí está la lista completa:
+
+| Agente | Cómo invocar | Qué hace |
+|-------|---------------|--------------|
+| **Plan** | `/plan` o `Shift+Tab` (ciclar modos) | Crea planes de implementación paso a paso antes de codificar |
+| **Code-review** | `/review` | Revisa cambios staged/unstaged con retroalimentación enfocada y accionable |
+| **Init** | `/init` | Genera archivos de configuración del proyecto (instrucciones, agentes) |
+| **Explore** | *Automático* | Usado internamente cuando pides a Copilot que explore o analice la base de código |
+| **Task** | *Automático* | Ejecuta comandos como pruebas, compilaciones, linters e instalaciones de dependencias |
+
+
+
+**Agentes incorporados en acción** - Ejemplos de invocación de Plan, Code-review, Explore y Task
+
+```bash
+copilot
+
+# Invoca al agente Plan para crear un plan de implementación
+> /plan Add input validation for book year in the book app
+
+# Invoca al agente de revisión de código para revisar tus cambios
+> /review
+
+# Los agentes Explore y Task se invocan automáticamente cuando corresponda:
+> Run the test suite # Usa el agente Task
+
+> Explore how book data is loaded # Usa el agente Explore
+```
+
+¿Qué pasa con el Agente Task? Funciona entre bastidores para gestionar y rastrear lo que está ocurriendo y reportar de forma clara y ordenada:
+
+| Resultado | Lo que ves |
+|---------|--------------|
+| ✅ **Éxito** | Resumen breve (por ejemplo, "Todas las 247 pruebas pasaron", "Compilación exitosa") |
+| ❌ **Fallo** | Salida completa con traces, errores de compilación y logs detallados |
+
+
+> 📚 **Documentación oficial**: [GitHub Copilot CLI Agents](https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli#use-custom-agents)
+
+---
+
+# Añadiendo agentes a Copilot CLI
+
+¡Puedes definir tus propios agentes para que formen parte de tu flujo de trabajo! Define una vez, ¡y dirige!
+
+
+
+## 🗂️ Añade tus agentes
+
+Los archivos de agente son archivos markdown con extensión `.agent.md`. Tienen dos partes: frontmatter YAML (metadatos) e instrucciones en markdown.
+
+> 💡 **¿Nuevo en frontmatter YAML?** Es un pequeño bloque de ajustes en la parte superior del archivo, rodeado por marcadores `---`. YAML son solo pares `clave: valor`. El resto del archivo es markdown normal.
+
+Aquí hay un agente mínimo:
+
+```markdown
+---
+name: my-reviewer
+description: Code reviewer focused on bugs and security issues
+---
+
+# Code Reviewer
+
+You are a code reviewer focused on finding bugs and security issues.
+
+When reviewing code, always check for:
+- SQL injection vulnerabilities
+- Missing error handling
+- Hardcoded secrets
+```
+
+> 💡 **Requerido vs Opcional**: El campo `description` es obligatorio. Otros campos como `name`, `tools` y `model` son opcionales.
+
+## Dónde colocar archivos de agente
+
+| Ubicación | Alcance | Ideal para |
+|----------|-------|----------|
+| `.github/agents/` | Específico del proyecto | Agentes compartidos por el equipo con convenciones del proyecto |
+| `~/.copilot/agents/` | Global (todos los proyectos) | Agentes personales que usas en todas partes |
+
+**Este proyecto incluye archivos de agente de muestra en la carpeta [.github/agents/](../../../.github/agents)**. Puedes escribir los tuyos propios o personalizar los que ya se proporcionan.
+
+
+📂 Ver los agentes de muestra en este curso
+
+| Archivo | Descripción |
+|------|-------------|
+| `hello-world.agent.md` | Ejemplo mínimo - empieza aquí |
+| `python-reviewer.agent.md` | Revisor de calidad de código Python |
+| `pytest-helper.agent.md` | Especialista en pruebas con Pytest |
+
+```bash
+# O copia uno en tu carpeta de agentes personales (disponible en cada proyecto)
+cp .github/agents/python-reviewer.agent.md ~/.copilot/agents/
+```
+
+Para más agentes de la comunidad, consulta [github/awesome-copilot](https://github.com/github/awesome-copilot)
+
+
+
+
+## 🚀 Dos maneras de usar agentes personalizados
+
+### Modo interactivo
+Dentro del modo interactivo, lista agentes usando `/agent` y selecciona el agente para empezar a trabajar.
+Selecciona un agente para continuar tu conversación con él.
+
+```bash
+copilot
+> /agent
+```
+
+Para cambiar a un agente diferente, o para volver al modo predeterminado, usa el comando `/agent` de nuevo.
+
+### Modo programático
+
+Inicia directamente una nueva sesión con un agente.
+
+```bash
+copilot --agent python-reviewer
+> Review @samples/book-app-project/books.py
+```
+
+> 💡 **Cambio de agentes**: Puedes cambiar a un agente diferente en cualquier momento usando `/agent` o `--agent` de nuevo. Para volver a la experiencia estándar de Copilot CLI, usa `/agent` y selecciona **no agent**.
+
+---
+
+# Profundizando con agentes
+
+
+
+> 💡 **Esta sección es opcional.** Los agentes incorporados (`/plan`, `/review`) son lo suficientemente potentes para la mayoría de los flujos de trabajo. Crea agentes personalizados cuando necesites experiencia especializada que se aplique de manera consistente en tu trabajo.
+
+Cada tema a continuación es autónomo. **Elige lo que te interese: no necesitas leerlos todos de una vez.**
+
+| Quiero... | Ir a |
+|---|---|
+| Ver por qué los agentes superan a los prompts genéricos | [Especialista vs Genérico](#especialista-vs-genérico-ver-la-diferencia) |
+| Combinar agentes en una funcionalidad | [Trabajar con múltiples agentes](#trabajar-con-múltiples-agentes) |
+| Organizar, nombrar y compartir agentes | [Organizar y compartir agentes](#organizar-y-compartir-agentes) |
+| Configurar contexto de proyecto siempre activo | [Configurar tu proyecto para Copilot](#configuración-rápida-con-init) |
+| Consultar propiedades YAML y herramientas | [Referencia de archivos de agente](#un-ejemplo-más-completo) |
+
+Selecciona un escenario abajo para expandirlo.
+
+---
+
+
+
+Especialista vs Genérico: Ver la diferencia - Por qué los agentes producen mejor salida que los prompts genéricos
+
+## Especialista vs Genérico: Ver la diferencia
+
+Aquí es donde los agentes demuestran su valor. Observa la diferencia:
+
+### Sin un agente (Copilot genérico)
+
+```bash
+copilot
+
+> Add a function to search books by year range in the book app
+```
+
+**Salida genérica**:
+```python
+def search_by_year_range(books, start_year, end_year):
+ results = []
+ for book in books:
+ if book['year'] >= start_year and book['year'] <= end_year:
+ results.append(book)
+ return results
+```
+
+Básico. Funciona. Pero le faltan muchas cosas.
+
+---
+
+### Con el agente revisor de Python
+
+```bash
+copilot
+
+> /agent
+# Seleccione "python-reviewer"
+
+> Add a function to search books by year range in the book app
+```
+
+**Salida especializada**:
+```python
+from typing import List, Dict, Any
+
+def search_by_year_range(
+ books: List[Dict[str, Any]],
+ start_year: int,
+ end_year: int
+) -> List[Dict[str, Any]]:
+ """
+ Search for books within a specified year range.
+
+ Args:
+ books: List of book dictionaries
+ start_year: Starting year (inclusive)
+ end_year: Ending year (inclusive)
+
+ Returns:
+ List of books published within the year range
+
+ Raises:
+ ValueError: If start_year is greater than end_year
+ TypeError: If year values are not integers
+ """
+ if not isinstance(start_year, int) or not isinstance(end_year, int):
+ raise TypeError("Year values must be integers")
+
+ if start_year > end_year:
+ raise ValueError(f"Start year ({start_year}) cannot be greater than end year ({end_year})")
+
+ return [
+ book for book in books
+ if isinstance(book.get('year'), int)
+ and start_year <= book['year'] <= end_year
+ ]
+```
+
+**Lo que el agente python-reviewer incluye automáticamente**:
+- ✅ Anotaciones de tipo en todos los parámetros y valores de retorno
+- ✅ Docstring completa con Args/Returns/Raises
+- ✅ Validación de entrada con manejo de errores apropiado
+- ✅ Comprensión de listas para mejor rendimiento
+- ✅ Manejo de casos extremos (valores de año faltantes/inválidos)
+- ✅ Formato conforme a PEP 8
+- ✅ Prácticas de programación defensiva
+
+**La diferencia**: Mismo prompt, salida dramáticamente mejor. El agente aporta la experiencia que podrías olvidar pedir.
+
+
+
+---
+
+
+
+Trabajar con múltiples agentes - Combina especialistas, cambia en mitad de la sesión, agente-como-herramientas
+
+## Trabajar con múltiples agentes
+
+El verdadero poder aparece cuando los especialistas trabajan juntos en una funcionalidad.
+
+### Ejemplo: Construyendo una funcionalidad simple
+
+```bash
+copilot
+
+> I want to add a "search by year range" feature to the book app
+
+# Usar python-reviewer para el diseño
+> /agent
+# Seleccionar "python-reviewer"
+
+> @samples/book-app-project/books.py Design a find_by_year_range method. What's the best approach?
+
+# Cambiar a pytest-helper para el diseño de pruebas
+> /agent
+# Seleccionar "pytest-helper"
+
+> @samples/book-app-project/tests/test_books.py Design test cases for a find_by_year_range method.
+> What edge cases should we cover?
+
+# Sintetizar ambos diseños
+> Create an implementation plan that includes the method implementation and comprehensive tests.
+```
+
+**La idea clave**: Tú eres el arquitecto que dirige a los especialistas. Ellos manejan los detalles, tú manejas la visión.
+
+
+🎬 ¡Verlo en acción!
+
+
+
+*La salida de la demostración varía: tu modelo, herramientas y respuestas serán diferentes a lo mostrado aquí.*
+
+
+
+### Agente como herramientas
+
+Cuando los agentes están configurados, Copilot también puede llamarlos como herramientas durante tareas complejas. Si pides una funcionalidad full-stack, Copilot puede delegar automáticamente partes a los agentes especialistas apropiados.
+
+
+
+---
+
+
+
+Organizar y compartir agentes - Nomenclatura, ubicación de archivos, archivos de instrucciones y compartición en equipo
+
+## Organizar y compartir agentes
+
+### Nombrar tus agentes
+
+Cuando creas archivos de agente, el nombre importa. Es lo que escribirás después de `/agent` o `--agent`, y lo que verán tus compañeros en la lista de agentes.
+
+| ✅ Buenos nombres | ❌ Evitar |
+|--------------|----------|
+| `frontend` | `my-agent` |
+| `backend-api` | `agent1` |
+| `security-reviewer` | `helper` |
+| `react-specialist` | `code` |
+| `python-backend` | `assistant` |
+
+**Convenciones de nombres:**
+- Usa minúsculas con guiones: `my-agent-name.agent.md`
+- Incluye el dominio: `frontend`, `backend`, `devops`, `security`
+- Sé específico cuando sea necesario: `react-typescript` vs solo `frontend`
+
+---
+
+### Compartir con tu equipo
+
+Coloca los archivos de agente en `.github/agents/` y estarán controlados por versión. Haz push a tu repo y todos los miembros del equipo los obtendrán automáticamente. Pero los agentes son solo un tipo de archivo que Copilot lee desde tu proyecto. También admite **archivos de instrucciones** que se aplican automáticamente a cada sesión, sin que nadie necesite ejecutar `/agent`.
+
+Piénsalo así: los agentes son especialistas a los que llamas, y los archivos de instrucciones son reglas del equipo que están siempre activas.
+
+### Dónde colocar tus archivos
+
+Ya conoces las dos ubicaciones principales (ver [Dónde colocar archivos de agente](#dónde-colocar-archivos-de-agente) arriba). Usa este árbol de decisión para elegir:
+
+
+
+**Comienza simple:** Crea un solo archivo `*.agent.md` en la carpeta de tu proyecto. Muévelo a una ubicación permanente una vez que estés satisfecho.
+
+Además de los archivos de agente, Copilot también lee **archivos de instrucciones a nivel de proyecto** automáticamente, sin necesidad de `/agent`. Consulta [Configurar tu proyecto para Copilot](#configuración-rápida-con-init) abajo para `AGENTS.md`, `.instructions.md` y `/init`.
+
+
+
+---
+
+
+
+Configurar tu proyecto para Copilot - AGENTS.md, archivos de instrucciones y configuración de /init
+## Configurando su proyecto para Copilot
+
+Los agentes son especialistas que invoca bajo demanda. **Los archivos de configuración del proyecto** son diferentes: Copilot los lee automáticamente en cada sesión para entender las convenciones, la pila tecnológica y las reglas de su proyecto. Nadie necesita ejecutar `/agent`; el contexto está siempre activo para todos los que trabajan en el repositorio.
+
+### Configuración rápida con /init
+
+La forma más rápida de empezar es dejar que Copilot genere archivos de configuración por usted:
+
+```bash
+copilot
+> /init
+```
+
+Copilot escaneará su proyecto y creará archivos de instrucciones a medida. Puede editarlos después.
+
+### Formatos de archivo de instrucciones
+
+| File | Scope | Notes |
+|------|-------|-------|
+| `AGENTS.md` | Project root or nested | **Cross-platform standard** - works with Copilot and other AI assistants |
+| `.github/copilot-instructions.md` | Project | GitHub Copilot specific |
+| `.github/instructions/*.instructions.md` | Project | Granular, topic-specific instructions |
+| `CLAUDE.md`, `GEMINI.md` | Project root | Supported for compatibility |
+
+> 🎯 **¿Está comenzando?** Use `AGENTS.md` para las instrucciones del proyecto. Puede explorar los otros formatos más adelante según lo necesite.
+
+### AGENTS.md
+
+`AGENTS.md` es el formato recomendado. Es un [estándar abierto](https://agents.md/) que funciona con Copilot y otras herramientas de codificación con IA. Colóquelo en la raíz de su repositorio y Copilot lo lee automáticamente. El [AGENTS.md](../AGENTS.md) de este proyecto es un ejemplo funcional.
+
+Un `AGENTS.md` típico describe el contexto de su proyecto, el estilo de código, los requisitos de seguridad y los estándares de pruebas. Escriba el suyo siguiendo el patrón de nuestro archivo de ejemplo.
+
+### Archivos de instrucciones personalizados (.instructions.md)
+
+Para equipos que desean un control más granular, divida las instrucciones en archivos específicos por tema. Cada archivo cubre una preocupación y se aplica automáticamente:
+
+```
+.github/
+└── instructions/
+ ├── python-standards.instructions.md
+ ├── security-checklist.instructions.md
+ └── api-design.instructions.md
+```
+
+> 💡 **Nota**: Los archivos de instrucciones funcionan con cualquier lenguaje. Este ejemplo usa Python para igualar nuestro proyecto del curso, pero puede crear archivos similares para TypeScript, Go, Rust o cualquier tecnología que utilice su equipo.
+
+#### Delimitando el alcance de las instrucciones con `applyTo`
+
+Por defecto, un archivo de instrucciones se aplica a toda conversación. Para limitarlo a tipos de archivo específicos, agregue un campo `applyTo` en el frontmatter YAML (el bloque entre marcadores `---` en la parte superior del archivo):
+
+```markdown
+---
+applyTo: "**/*.py"
+---
+# Python Standards
+Always follow PEP 8 style conventions.
+Use type hints in all function signatures.
+```
+
+Con `applyTo: "**/*.py"`, Copilot solo carga ese archivo de instrucciones cuando está trabajando con archivos Python. Las instrucciones para el estilo de Python nunca ensucian una conversación sobre, por ejemplo, un Dockerfile o una consulta SQL.
+
+Aquí hay algunos patrones comunes:
+
+| `applyTo` value | When it applies |
+|---|---|
+| `"**/*.py"` | Any Python file |
+| `"**/*.{ts,tsx}"` | TypeScript and TSX files |
+| `"tests/**"` | Any file inside a `tests/` folder |
+| (sin frontmatter) | Every conversation — the default |
+
+> 💡 **Consejo**: Encierre el patrón glob entre comillas (por ejemplo, `"**/*.py"`) para asegurarse de que se interprete correctamente en todos los sistemas operativos y shells.
+
+**Encontrar archivos de instrucción comunitarios**: Busque [github/awesome-copilot](https://github.com/github/awesome-copilot) para archivos de instrucción prefabricados que cubren .NET, Angular, Azure, Python, Docker y muchas más tecnologías.
+
+### Desactivar instrucciones personalizadas
+
+Si necesita que Copilot ignore todas las configuraciones específicas del proyecto (útil para depuración o para comparar comportamientos):
+
+```bash
+copilot --no-custom-instructions
+```
+
+
+
+---
+
+
+
+Referencia de archivo de agente - propiedades YAML, alias de herramientas y ejemplos completos
+
+## Referencia de archivo de agente
+
+### Un ejemplo más completo
+
+Ha visto el [formato mínimo de agente](#-add-your-agents) arriba. Aquí hay un agente más completo que usa la propiedad `tools`. Cree `~/.copilot/agents/python-reviewer.agent.md`:
+
+```markdown
+---
+name: python-reviewer
+description: Python code quality specialist for reviewing Python projects
+tools: ["read", "edit", "search", "execute"]
+---
+
+# Python Code Reviewer
+
+You are a Python specialist focused on code quality and best practices.
+
+**Your focus areas:**
+- Code quality (PEP 8, type hints, docstrings)
+- Performance optimization (list comprehensions, generators)
+- Error handling (proper exception handling)
+- Maintainability (DRY principles, clear naming)
+
+**Code style requirements:**
+- Use Python 3.10+ features (dataclasses, type hints, pattern matching)
+- Follow PEP 8 naming conventions
+- Use context managers for file I/O
+- All functions must have type hints and docstrings
+
+**When reviewing code, always check:**
+- Missing type hints on function signatures
+- Mutable default arguments
+- Proper error handling (no bare except)
+- Input validation completeness
+```
+
+### Propiedades YAML
+
+| Property | Required | Description |
+|----------|----------|-------------|
+| `name` | No | Display name (defaults to filename) |
+| `description` | **Yes** | What the agent does - helps Copilot understand when to suggest it |
+| `tools` | No | List of allowed tools (omit = all tools available). See tool aliases below. |
+| `target` | No | Limit to `vscode` or `github-copilot` only |
+
+### Alias de herramientas
+
+Use estos nombres en la lista `tools`:
+- `read` - Leer el contenido de archivos
+- `edit` - Editar archivos
+- `search` - Buscar archivos (grep/glob)
+- `execute` - Ejecutar comandos de shell (también: `shell`, `Bash`)
+- `agent` - Invocar otros agentes personalizados
+
+> 📖 **Documentación oficial**: [Configuración de agentes personalizados](https://docs.github.com/copilot/reference/custom-agents-configuration)
+>
+> ⚠️ **Solo VS Code**: La propiedad `model` (para seleccionar modelos de IA) funciona en VS Code pero no es compatible con GitHub Copilot CLI. Puede incluirla con seguridad en archivos de agente multiplataforma. GitHub Copilot CLI la ignorará.
+
+### Más plantillas de agentes
+
+> 💡 **Nota para principiantes**: Los ejemplos a continuación son plantillas. **Reemplace las tecnologías específicas por las que use su proyecto.** Lo importante es la *estructura* del agente, no las tecnologías concretas mencionadas.
+
+Este proyecto incluye ejemplos funcionales en la carpeta [.github/agents/](../../../.github/agents):
+- [hello-world.agent.md](../../../.github/agents/hello-world.agent.md) - Ejemplo mínimo, comience aquí
+- [python-reviewer.agent.md](../../../.github/agents/python-reviewer.agent.md) - Revisor de calidad de código Python
+- [pytest-helper.agent.md](../../../.github/agents/pytest-helper.agent.md) - Especialista en pruebas Pytest
+
+Para agentes comunitarios, vea [github/awesome-copilot](https://github.com/github/awesome-copilot).
+
+
+
+---
+
+# Práctica
+
+
+
+Cree sus propios agentes y véalos en acción.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+```bash
+
+# Crear el directorio de agentes (si no existe)
+mkdir -p .github/agents
+
+# Crear un agente revisor de código
+cat > .github/agents/reviewer.agent.md << 'EOF'
+---
+name: reviewer
+description: Senior code reviewer focused on security and best practices
+---
+
+# Agente revisor de código
+
+You are a senior code reviewer focused on code quality.
+
+**Review priorities:**
+1. Security vulnerabilities
+2. Performance issues
+3. Maintainability concerns
+4. Best practice violations
+
+**Output format:**
+Provide issues as a numbered list with severity tags:
+[CRITICAL], [HIGH], [MEDIUM], [LOW]
+EOF
+
+# Crear un agente de documentación
+cat > .github/agents/documentor.agent.md << 'EOF'
+---
+name: documentor
+description: Technical writer for clear and complete documentation
+---
+
+# Agente de documentación
+
+You are a technical writer who creates clear documentation.
+
+**Documentation standards:**
+- Start with a one-sentence summary
+- Include usage examples
+- Document parameters and return values
+- Note any gotchas or limitations
+EOF
+
+# Ahora úsalos
+copilot --agent reviewer
+> Review @samples/book-app-project/books.py
+
+# O cambia de agentes
+copilot
+> /agent
+# Selecciona "documentor"
+> Document @samples/book-app-project/books.py
+```
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Construir un equipo de agentes especializados
+
+El ejemplo práctico creó los agentes `reviewer` y `documentor`. Ahora practique creando y usando agentes para una tarea diferente: mejorar la validación de datos en la aplicación de libros:
+
+1. Cree 3 archivos de agente (`.agent.md`) adaptados a la aplicación de libros, uno por agente, ubicados en `.github/agents/`
+2. Sus agentes:
+ - **data-validator**: revisa `data.json` en busca de datos faltantes o mal formados (autores vacíos, year=0, campos faltantes)
+ - **error-handler**: revisa el código Python en busca de manejo de errores inconsistente y sugiere un enfoque unificado
+ - **doc-writer**: genera o actualiza docstrings y contenido del README
+3. Use cada agente en la aplicación de libros:
+ - `data-validator` → auditar `@samples/book-app-project/data.json`
+ - `error-handler` → revisar `@samples/book-app-project/books.py` y `@samples/book-app-project/utils.py`
+ - `doc-writer` → agregar docstrings a `@samples/book-app-project/books.py`
+4. Colabore: use `error-handler` para identificar brechas en el manejo de errores y luego `doc-writer` para documentar el enfoque mejorado
+
+**Criterios de éxito**: Tiene 3 agentes funcionales que producen resultados consistentes y de alta calidad y puede cambiar entre ellos con `/agent`.
+
+
+💡 Sugerencias (haga clic para expandir)
+
+**Plantillas iniciales**: cree un archivo por agente en `.github/agents/`:
+
+`data-validator.agent.md`:
+```markdown
+---
+description: Analyzes JSON data files for missing or malformed entries
+---
+
+You analyze JSON data files for missing or malformed entries.
+
+**Focus areas:**
+- Empty or missing author fields
+- Invalid years (year=0, future years, negative years)
+- Missing required fields (title, author, year, read)
+- Duplicate entries
+```
+
+`error-handler.agent.md`:
+```markdown
+---
+description: Reviews Python code for error handling consistency
+---
+
+You review Python code for error handling consistency.
+
+**Standards:**
+- No bare except clauses
+- Use custom exceptions where appropriate
+- All file operations use context managers
+- Consistent return types for success/failure
+```
+
+`doc-writer.agent.md`:
+```markdown
+---
+description: Technical writer for clear Python documentation
+---
+
+You are a technical writer who creates clear Python documentation.
+
+**Standards:**
+- Google-style docstrings
+- Include parameter types and return values
+- Add usage examples for public methods
+- Note any exceptions raised
+```
+
+**Probando sus agentes:**
+
+> 💡 **Nota:** Debería tener `samples/book-app-project/data.json` en su copia local de este repositorio. Si falta, descargue la versión original desde el repositorio fuente:
+> [data.json](https://github.com/github/copilot-cli-for-beginners/blob/main/samples/book-app-project/data.json)
+
+```bash
+copilot
+> /agent
+# Seleccione "data-validator" de la lista
+> @samples/book-app-project/data.json Check for books with empty author fields or invalid years
+```
+
+**Consejo:** El campo `description` en el frontmatter YAML es obligatorio para que los agentes funcionen.
+
+
+
+### Desafío adicional: Biblioteca de instrucciones
+
+Ha construido agentes que invoca bajo demanda. Ahora pruebe el otro lado: **archivos de instrucciones** que Copilot lee automáticamente en cada sesión, sin necesidad de `/agent`.
+
+Cree una carpeta `.github/instructions/` con al menos 3 archivos de instrucciones:
+- `python-style.instructions.md` para aplicar PEP 8 y convenciones de type hints
+- `test-standards.instructions.md` para aplicar convenciones de pytest en archivos de prueba
+- `data-quality.instructions.md` para validar entradas de datos JSON
+
+Pruebe cada archivo de instrucciones en el código de la aplicación de libros.
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haga clic para expandir)
+
+### Errores comunes
+
+| Mistake | What Happens | Fix |
+|---------|--------------|-----|
+| Missing `description` in agent frontmatter | Agent won't load or won't be discoverable | Always include `description:` in YAML frontmatter |
+| Wrong file location for agents | Agent not found when you try to use it | Place in `~/.copilot/agents/` (personal) or `.github/agents/` (project) |
+| Using `.md` instead of `.agent.md` | File may not be recognized as an agent | Name files like `python-reviewer.agent.md` |
+| Overly long agent prompts | May hit the 30,000 character limit | Keep agent definitions focused; use skills for detailed instructions |
+
+### Solución de problemas
+
+**Agent not found** - Verifique que el archivo del agente exista en una de estas ubicaciones:
+- `~/.copilot/agents/`
+- `.github/agents/`
+
+List available agents:
+
+```bash
+copilot
+> /agent
+# Muestra todos los agentes disponibles
+```
+
+**Agent not following instructions** - Sea explícito en sus indicaciones y agregue más detalle a las definiciones de los agentes:
+- Frameworks/librerías específicas con versiones
+- Convenciones del equipo
+- Patrones de código de ejemplo
+
+**Custom instructions not loading** - Ejecute `/init` en su proyecto para configurar instrucciones específicas del proyecto:
+
+```bash
+copilot
+> /init
+```
+
+O verifique si están deshabilitadas:
+```bash
+# No uses --no-custom-instructions si quieres que se carguen
+copilot # Esto carga las instrucciones personalizadas por defecto
+```
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **Agentes integrados**: `/plan` y `/review` se invocan directamente; Explore y Task funcionan automáticamente
+2. **Agentes personalizados** son especialistas definidos en archivos `.agent.md`
+3. **Los buenos agentes** tienen experiencia clara, estándares y formatos de salida
+4. **La colaboración multiagente** resuelve problemas complejos combinando experiencias
+5. **Los archivos de instrucciones** (`.instructions.md`) codifican los estándares del equipo para aplicación automática
+6. **La salida consistente** proviene de instrucciones de agente bien definidas
+
+> 📋 **Referencia rápida**: Vea la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+## ➡️ ¿Qué sigue?
+
+Los agentes cambian *cómo Copilot aborda y realiza acciones dirigidas* en su código. A continuación, aprenderá sobre **habilidades** - que cambian *qué pasos* sigue. ¿Se pregunta cómo difieren agentes y habilidades? El Capítulo 05 lo cubre directamente.
+
+En **[Capítulo 05: Sistema de habilidades](../05-skills/README.md)**, aprenderá:
+
+- Cómo las habilidades se activan automáticamente desde sus indicaciones (sin comando slash)
+- Instalar skills de la comunidad
+- Crear skills personalizados con archivos SKILL.md
+- La diferencia entre agentes, skills y MCP
+- Cuándo usar cada uno
+
+---
+
+**[← Volver al Capítulo 03](../03-development-workflows/README.md)** | **[Continuar al Capítulo 05 →](../05-skills/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/05-skills/README.md b/translations/es/05-skills/README.md
new file mode 100644
index 00000000..cee2019f
--- /dev/null
+++ b/translations/es/05-skills/README.md
@@ -0,0 +1,892 @@
+
+
+> **¿Qué pasaría si Copilot pudiera aplicar automáticamente las mejores prácticas de tu equipo sin que tengas que explicarlas cada vez?**
+
+En este capítulo, aprenderás sobre Agent Skills: carpetas de instrucciones que Copilot carga automáticamente cuando son relevantes para tu tarea. Mientras que los agentes cambian *cómo* piensa Copilot, las habilidades enseñan a Copilot *maneras específicas de completar tareas*. Crearás una habilidad de auditoría de seguridad que Copilot aplique siempre que preguntes sobre seguridad, construirás criterios de revisión estándar del equipo que aseguren una calidad de código consistente y aprenderás cómo funcionan las habilidades en Copilot CLI, VS Code y el agente en la nube de GitHub Copilot.
+
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, podrás:
+
+- Entender cómo funcionan las Agent Skills y cuándo usarlas
+- Crear habilidades personalizadas con archivos SKILL.md
+- Usar habilidades de la comunidad desde repositorios compartidos
+- Saber cuándo usar habilidades vs agentes vs MCP
+
+> ⏱️ **Tiempo estimado**: ~55 minutos (20 min lectura + 35 min práctico)
+
+---
+
+## 🧩 Analogía del mundo real: Herramientas eléctricas
+
+Un taladro de uso general es útil, pero los accesorios especializados lo hacen poderoso.
+
+
+
+Las habilidades funcionan de la misma manera. Al igual que cambiar brocas para diferentes trabajos, puedes añadir habilidades a Copilot para distintas tareas:
+
+| Accesorio de habilidad | Propósito |
+|------------|---------|
+| `commit` | Genera mensajes de commit consistentes |
+| `security-audit` | Comprueba vulnerabilidades OWASP |
+| `generate-tests` | Crea pruebas de pytest completas |
+| `code-checklist` | Aplica estándares de calidad de código del equipo |
+
+
+
+*Las habilidades son accesorios especializados que amplían lo que Copilot puede hacer*
+
+---
+
+# Cómo funcionan las habilidades
+
+
+
+Aprende qué son las habilidades, por qué importan y cómo se diferencian de los agentes y MCP.
+
+---
+
+## *¿Nuevo en habilidades?* ¡Empieza aquí!
+
+1. **See what skills are already available:**
+ ```bash
+ copilot
+ > /skills list
+ ```
+ This shows all skills Copilot can find, including any **built-in skills** that ship with the CLI itself, plus skills from your project and personal folders.
+
+ > 💡 **Habilidades integradas**: El Copilot CLI viene con habilidades preinstaladas por defecto. Por ejemplo, la habilidad `customizing-copilot-cloud-agents-environment` proporciona una guía para personalizar el entorno del agente en la nube de Copilot. No necesitas crear ni instalar nada para usarlas. Ejecuta `/skills list` para ver lo que está disponible.
+
+2. **Look at a real skill file:** Check out our provided [code-checklist SKILL.md](../../../.github/skills/code-checklist/SKILL.md) to see the pattern. It's just YAML frontmatter plus markdown instructions.
+
+3. **Understand the core concept:** Skills are task-specific instructions that Copilot loads *automatically* when your prompt matches the skill's description. You don't need to activate them, just ask naturally.
+
+
+## Entendiendo las habilidades
+
+Agent Skills son carpetas que contienen instrucciones, scripts y recursos que Copilot **carga automáticamente cuando son relevantes** para tu tarea. Copilot lee tu prompt, verifica si alguna habilidad coincide y aplica automáticamente las instrucciones relevantes.
+
+```bash
+copilot
+
+> Check books.py against our quality checklist
+# Copilot detecta que esto coincide con tu habilidad "code-checklist"
+# y aplica automáticamente su lista de verificación de calidad para Python
+
+> Generate tests for the BookCollection class
+# Copilot carga tu habilidad "pytest-gen"
+# y aplica tu estructura de pruebas preferida
+
+> What are the code quality issues in this file?
+# Copilot carga tu habilidad "code-checklist"
+# y verifica frente a los estándares de tu equipo
+```
+
+> 💡 **Idea clave**: Las habilidades se **activan automáticamente** en función de que tu prompt coincida con la descripción de la habilidad. Simplemente pregunta de forma natural y Copilot aplica las habilidades relevantes en segundo plano. También puedes invocar habilidades directamente, lo que aprenderás a continuación.
+
+> 🧰 **Plantillas listas para usar**: Consulta la carpeta [.github/skills](../../../.github/skills) para ver habilidades sencillas que puedes copiar y probar.
+
+### Invocación directa con comando de barra
+
+Aunque la activación automática es la forma principal en que funcionan las habilidades, también puedes **invocarlas directamente** usando su nombre como un comando con barra:
+
+```bash
+> /generate-tests Create tests for the user authentication module
+
+> /code-checklist Check books.py for code quality issues
+
+> /security-audit Check the API endpoints for vulnerabilities
+```
+
+Esto te da control explícito cuando quieres asegurarte de que se use una habilidad específica.
+
+#### Combining Multiple Skills in One Message
+
+Puedes invocar **más de una habilidad en un solo mensaje**, y el comando de habilidad con barra puede aparecer en cualquier parte de tu prompt — no solo al principio. Esto es útil cuando quieres que se hagan dos comprobaciones diferentes en una sola vez:
+
+```bash
+> Check @samples/book-app-project/book_app.py with /code-checklist and also run /generate-tests for it
+
+> Review the auth module /security-audit then /code-checklist the result
+```
+
+Copilot aplicará cada habilidad nombrada en la misma respuesta, ahorrándote el envío de múltiples mensajes separados.
+
+> 💡 **Consejo**: Coloca los comandos de habilidad con barra donde te resulten más naturales en la oración. Puedes ponerlos al inicio, en medio o al final de tu mensaje.
+
+> 📝 **Invocación: Habilidades vs Agentes**: No confundas la invocación de habilidades con la invocación de agentes:
+> - **Skills**: `/skill-name `, p. ej., `/code-checklist Check this file`
+> - **Agents**: `/agent` (selecciona de la lista) o `copilot --agent ` (línea de comandos)
+>
+> Si tienes tanto una habilidad como un agente con el mismo nombre (p. ej., "code-reviewer"), escribir `/code-reviewer` invoca la **habilidad**, no el agente.
+
+### ¿Cómo sé si se usó una habilidad?
+
+Puedes preguntarle directamente a Copilot:
+
+```bash
+> What skills did you use for that response?
+
+> What skills do you have available for security reviews?
+```
+
+### Habilidades vs Agentes vs MCP
+
+Las habilidades son solo una pieza del modelo de extensibilidad de GitHub Copilot. Aquí se muestra cómo se comparan con los agentes y los servidores MCP.
+
+> *No te preocupes por MCP todavía. Lo cubriremos en [Chapter 06](../../../06-mcp-servers). Se incluye aquí para que puedas ver cómo encajan las habilidades en el panorama general.*
+
+
+
+| Característica | Qué hace | Cuándo usarla |
+|---------|--------------|-------------|
+| **Agentes** | Cambia cómo piensa la IA | Necesitas experiencia especializada en muchas tareas |
+| **Habilidades** | Proporciona instrucciones específicas para tareas | Tareas específicas y repetibles con pasos detallados |
+| **MCP** | Conecta servicios externos | Necesitas datos en vivo de APIs |
+
+Usa agentes para experiencia amplia, habilidades para instrucciones específicas de tareas y MCP para datos externos. Un agente puede usar una o más habilidades durante una conversación. Por ejemplo, cuando le pides a un agente que revise tu código, podría aplicar automáticamente tanto una habilidad `security-audit` como una `code-checklist`.
+
+> 📚 **Aprende más**: Consulta la documentación oficial [About Agent Skills](https://docs.github.com/copilot/concepts/agents/about-agent-skills) para la referencia completa sobre formatos de habilidades y buenas prácticas.
+
+---
+
+## De prompts manuales a experiencia automática
+
+Antes de profundizar en cómo crear habilidades, veamos *por qué* vale la pena aprenderlas. Una vez que veas las ganancias en consistencia, el "cómo" tendrá más sentido.
+
+### Antes de las habilidades: Revisiones inconsistentes
+
+En cada revisión de código, podrías olvidar algo:
+
+```bash
+copilot
+
+> Review this code for issues
+# Revisión genérica - podría pasar por alto las preocupaciones específicas de su equipo
+```
+
+O escribes un prompt largo cada vez:
+
+```bash
+> Review this code checking for bare except clauses, missing type hints,
+> mutable default arguments, missing context managers for file I/O,
+> functions over 50 lines, print statements in production code...
+```
+
+Tiempo: **más de 30 segundos** para escribir. Consistencia: **varía según la memoria**.
+
+### Después de las habilidades: Mejores prácticas automáticas
+
+Con una habilidad `code-checklist` instalada, solo pregunta de forma natural:
+
+```bash
+copilot
+
+> Check the book collection code for quality issues
+```
+
+**Qué sucede entre bastidores**:
+1. Copilot ve "calidad de código" y "problemas" en tu prompt
+2. Comprueba las descripciones de habilidades y encuentra que tu habilidad `code-checklist` coincide
+3. Carga automáticamente la lista de verificación de calidad de tu equipo
+4. Aplica todas las comprobaciones sin que tú las enumeres
+
+
+
+*Simplemente pregunta de forma natural. Copilot empareja tu prompt con la habilidad correcta y la aplica automáticamente.*
+
+**Salida**:
+```
+## Code Checklist: books.py
+
+### Code Quality
+- [PASS] All functions have type hints
+- [PASS] No bare except clauses
+- [PASS] No mutable default arguments
+- [PASS] Context managers used for file I/O
+- [PASS] Functions are under 50 lines
+- [PASS] Variable and function names follow PEP 8
+
+### Input Validation
+- [FAIL] User input is not validated - add_book() accepts any year value
+- [FAIL] Edge cases not fully handled - empty strings accepted for title/author
+- [PASS] Error messages are clear and helpful
+
+### Testing
+- [FAIL] No corresponding pytest tests found
+
+### Summary
+3 items need attention before merge
+```
+
+**La diferencia**: Los estándares de tu equipo se aplican automáticamente, cada vez, sin que tengas que escribirlos.
+
+---
+
+
+🎬 ¡Míralo en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas diferirán de lo mostrado aquí.*
+
+
+
+---
+
+## Consistencia a escala: Habilidad de revisión de PR del equipo
+
+Imagina que tu equipo tiene una lista de verificación de PR de 10 puntos. Sin una habilidad, cada desarrollador debe recordar los 10 puntos, y siempre alguien olvida uno. Con una habilidad `pr-review`, todo el equipo obtiene revisiones consistentes:
+
+```bash
+copilot
+
+> Can you review this PR?
+```
+
+Copilot carga automáticamente la habilidad `pr-review` de tu equipo y comprueba los 10 puntos:
+
+```
+PR Review: feature/user-auth
+
+## Security ✅
+- No hardcoded secrets
+- Input validation present
+- No bare except clauses
+
+## Code Quality ⚠️
+- [WARN] print statement on line 45 - remove before merge
+- [WARN] TODO on line 78 missing issue reference
+- [WARN] Missing type hints on public functions
+
+## Testing ✅
+- New tests added
+- Edge cases covered
+
+## Documentation ❌
+- [FAIL] Breaking change not documented in CHANGELOG
+- [FAIL] API changes need OpenAPI spec update
+```
+
+**El poder**: Cada miembro del equipo aplica los mismos estándares automáticamente. Los nuevos contratados no necesitan memorizar la lista porque la habilidad se encarga de ello.
+
+---
+
+# Crear habilidades personalizadas
+
+
+
+Crea tus propias habilidades a partir de archivos SKILL.md.
+
+---
+
+## Ubicaciones de habilidades
+
+Las habilidades se almacenan en `.github/skills/` (específico del proyecto) o `~/.copilot/skills/` (nivel de usuario).
+
+### Cómo Copilot encuentra las habilidades
+
+Copilot examina automáticamente estas ubicaciones en busca de habilidades:
+
+| Ubicación | Alcance |
+|----------|-------|
+| `.github/skills/` | Específico del proyecto (compartido con el equipo via git) |
+| `~/.copilot/skills/` | Específico del usuario (tus habilidades personales) |
+
+### Estructura de la habilidad
+
+Cada habilidad vive en su propia carpeta con un archivo `SKILL.md`. Opcionalmente puedes incluir scripts, ejemplos u otros recursos:
+
+```
+.github/skills/
+└── my-skill/
+ ├── SKILL.md # Required: Skill definition and instructions
+ ├── examples/ # Optional: Example files Copilot can reference
+ │ └── sample.py
+ └── scripts/ # Optional: Scripts the skill can use
+ └── validate.sh
+```
+
+> 💡 **Consejo**: El nombre del directorio debe coincidir con el `name` en el frontmatter de tu SKILL.md (minúsculas con guiones).
+
+### Formato de SKILL.md
+
+Las habilidades usan un formato markdown simple con frontmatter YAML:
+
+```markdown
+---
+name: code-checklist
+description: Comprehensive code quality checklist with security, performance, and maintainability checks
+license: MIT
+---
+
+# Code Checklist
+
+When checking code, look for:
+
+## Security
+- SQL injection vulnerabilities
+- XSS vulnerabilities
+- Authentication/authorization issues
+- Sensitive data exposure
+
+## Performance
+- N+1 query problems (running one query per item instead of one query for all items)
+- Unnecessary loops or computations
+- Memory leaks
+- Blocking operations
+
+## Maintainability
+- Function length (flag functions > 50 lines)
+- Code duplication
+- Missing error handling
+- Unclear naming
+
+## Output Format
+Provide issues as a numbered list with severity:
+- [CRITICAL] - Must fix before merge
+- [HIGH] - Should fix before merge
+- [MEDIUM] - Should address soon
+- [LOW] - Nice to have
+```
+
+**Propiedades YAML:**
+
+| Propiedad | Requerida | Descripción |
+|----------|----------|-------------|
+| `name` | **Sí** | Identificador único (minúsculas, guiones en lugar de espacios) |
+| `description` | **Sí** | Qué hace la habilidad y cuándo Copilot debería usarla |
+| `license` | No | Licencia que se aplica a esta habilidad |
+
+> 📖 **Documentación oficial**: [About Agent Skills](https://docs.github.com/copilot/concepts/agents/about-agent-skills)
+
+### Crea tu primera habilidad
+
+Construyamos una habilidad de auditoría de seguridad que compruebe las vulnerabilidades OWASP Top 10:
+
+```bash
+# Crear el directorio de la skill
+mkdir -p .github/skills/security-audit
+
+# Crear el archivo SKILL.md
+cat > .github/skills/security-audit/SKILL.md << 'EOF'
+---
+name: security-audit
+description: Security-focused code review checking OWASP (Open Web Application Security Project) Top 10 vulnerabilities
+---
+
+# Auditoría de seguridad
+
+Perform a security audit checking for:
+
+## Vulnerabilidades de inyección
+- SQL injection (string concatenation in queries)
+- Command injection (unsanitized shell commands)
+- LDAP injection
+- XPath injection
+
+## Problemas de autenticación
+- Hardcoded credentials
+- Weak password requirements
+- Missing rate limiting
+- Session management flaws
+
+## Datos sensibles
+- Plaintext passwords
+- API keys in code
+- Logging sensitive information
+- Missing encryption
+
+## Control de acceso
+- Missing authorization checks
+- Insecure direct object references
+- Path traversal vulnerabilities
+
+## Salida
+For each issue found, provide:
+1. File and line number
+2. Vulnerability type
+3. Severity (CRITICAL/HIGH/MEDIUM/LOW)
+4. Recommended fix
+EOF
+
+# Prueba tu skill (las skills se cargan automáticamente según tu prompt)
+copilot
+
+> @samples/book-app-project/ Check this code for security vulnerabilities
+# Copilot detecta coincidencias de "vulnerabilidades de seguridad" en tu skill
+# y aplica automáticamente su lista de verificación OWASP
+```
+
+**Salida esperada** (tus resultados variarán):
+
+```
+Security Audit: book-app-project
+
+[HIGH] Hardcoded file path (book_app.py, line 12)
+ File path is hardcoded rather than configurable
+ Fix: Use environment variable or config file
+
+[MEDIUM] No input validation (book_app.py, line 34)
+ User input passed directly to function without sanitization
+ Fix: Add input validation before processing
+
+✅ No SQL injection found
+✅ No hardcoded credentials found
+```
+
+---
+
+## Escribir buenas descripciones de habilidades
+
+El campo `description` en tu SKILL.md es crucial. ¡Es cómo Copilot decide si debe cargar tu habilidad o no!
+
+```markdown
+---
+name: security-audit
+description: Use for security reviews, vulnerability scanning,
+ checking for SQL injection, XSS, authentication issues,
+ OWASP Top 10 vulnerabilities, and security best practices
+---
+```
+
+> 💡 **Consejo**: Incluye palabras clave que coincidan con la forma en que preguntas de forma natural. Si dices "revisión de seguridad", incluye "revisión de seguridad" en la descripción.
+
+### Combinar habilidades con agentes
+
+Las habilidades y los agentes funcionan juntos. El agente aporta la experiencia, la habilidad aporta instrucciones específicas:
+
+```bash
+# Comienza con un agente revisor de código
+copilot --agent code-reviewer
+
+> Check the book app for quality issues
+# La experiencia del agente revisor de código se combina
+# con la lista de verificación de tu habilidad de comprobación de código
+```
+
+---
+
+# Gestionar y compartir habilidades
+
+Descubre las habilidades instaladas, encuentra habilidades comunitarias y comparte las tuyas.
+
+
+
+---
+
+## Gestionar habilidades con el comando `/skills`
+
+Usa el comando `/skills` para gestionar tus habilidades instaladas:
+
+| Comando | Qué hace |
+|---------|--------------|
+| `/skills list` | Muestra todas las habilidades instaladas |
+| `/skills info ` | Obtiene detalles sobre una habilidad específica |
+| `/skills add ` | Habilita una habilidad (desde un repositorio o marketplace) |
+| `/skills remove ` | Deshabilita o desinstala una habilidad |
+| `/skills reload` | Recarga las habilidades después de editar archivos SKILL.md |
+
+> 💡 **Recuerda**: No necesitas "activar" las habilidades para cada prompt. Una vez instaladas, las habilidades se **activan automáticamente** cuando tu prompt coincide con su descripción. Estos comandos sirven para gestionar qué habilidades están disponibles, no para usarlas.
+
+### Ejemplo: Ver tus habilidades
+
+```bash
+copilot
+
+> /skills list
+
+Available skills:
+- security-audit: Security-focused code review checking OWASP Top 10
+- generate-tests: Generate comprehensive unit tests with edge cases
+- code-checklist: Team code quality checklist
+...
+
+> /skills info security-audit
+
+Skill: security-audit
+Source: Project
+Location: .github/skills/security-audit/SKILL.md
+Description: Security-focused code review checking OWASP Top 10 vulnerabilities
+```
+
+---
+
+
+¡Míralo en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas diferirán de lo mostrado aquí.*
+
+
+
+---
+
+### Cuándo usar `/skills reload`
+
+Después de crear o editar el archivo SKILL.md de una habilidad, ejecuta `/skills reload` para aplicar los cambios sin reiniciar Copilot:
+
+```bash
+# Edita tu archivo de habilidad
+# Luego en Copilot:
+> /skills reload
+Skills reloaded successfully.
+```
+
+> 💡 **Bueno saber**: Las habilidades siguen siendo efectivas incluso después de usar `/compact` para resumir el historial de tu conversación. No es necesario recargar después de compactar.
+
+---
+
+## Encontrar y usar habilidades de la comunidad
+
+### Usar complementos para instalar habilidades
+> 💡 **¿Qué son los plugins?** Plugins son paquetes instalables que pueden agrupar skills, agentes y configuraciones de servidor MCP juntos. Piénsalos como extensiones tipo "tienda de apps" para Copilot CLI.
+
+El comando `/plugin` te permite explorar e instalar estos paquetes:
+
+```bash
+copilot
+
+> /plugin list
+# Muestra los complementos instalados
+
+> /plugin marketplace
+# Explorar complementos disponibles
+
+> /plugin install
+# Instalar un complemento desde el mercado
+```
+
+Para mantener actualizado tu catálogo local de complementos, actualízalo con:
+
+```bash
+copilot plugin marketplace update
+```
+
+Los complementos pueden agrupar múltiples capacidades. Un solo complemento puede incluir habilidades, agentes y configuraciones de servidor MCP relacionadas que funcionan juntos.
+
+### Repositorios de habilidades de la comunidad
+
+Las habilidades prelistas también están disponibles en repositorios de la comunidad:
+
+- **[Awesome Copilot](https://github.com/github/awesome-copilot)** - Official GitHub Copilot resources including skills documentation and examples
+
+### Instalar una habilidad de la comunidad con GitHub CLI
+
+La forma más sencilla de instalar una habilidad desde un repositorio de GitHub es usando el comando `gh skill install` (requiere [GitHub CLI v2.90.0+](https://github.blog/changelog/2026-04-16-manage-agent-skills-with-github-cli/)):
+
+```bash
+# Explora y selecciona de forma interactiva una habilidad de awesome-copilot
+gh skill install github/awesome-copilot
+
+# O instala directamente una habilidad específica
+gh skill install github/awesome-copilot code-checklist
+
+# Instalar para uso personal en todos los proyectos (ámbito de usuario)
+gh skill install github/awesome-copilot code-checklist --scope user
+```
+
+> ⚠️ **Revisa antes de instalar**: Siempre lee el `SKILL.md` de una skill antes de instalarla. Las skills controlan lo que Copilot hace, y una skill maliciosa podría indicarle ejecutar comandos dañinos o modificar código de maneras inesperadas.
+
+---
+
+# Práctica
+
+
+
+Aplica lo que has aprendido construyendo y probando tus propias skills.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+### Crear más skills
+
+Aquí hay dos skills más que muestran diferentes patrones. Sigue el mismo flujo de trabajo `mkdir` + `cat` de "Crea tu primera habilidad" arriba o copia y pega las skills en la ubicación adecuada. Hay más ejemplos disponibles en [.github/skills](../../../.github/skills).
+
+### Habilidad de generación de pruebas con pytest
+
+Una habilidad que garantiza una estructura de pytest coherente en toda tu base de código:
+
+```bash
+mkdir -p .github/skills/pytest-gen
+
+cat > .github/skills/pytest-gen/SKILL.md << 'EOF'
+---
+name: pytest-gen
+description: Generate comprehensive pytest tests with fixtures and edge cases
+---
+
+# Generación de pruebas con pytest
+
+Generate pytest tests that include:
+
+## Estructura de pruebas
+- Use pytest conventions (test_ prefix)
+- One assertion per test when possible
+- Clear test names describing expected behavior
+- Use fixtures for setup/teardown
+
+## Cobertura
+- Happy path scenarios
+- Edge cases: None, empty strings, empty lists
+- Boundary values
+- Error scenarios with pytest.raises()
+
+## Fixtures
+- Use @pytest.fixture for reusable test data
+- Use tmpdir/tmp_path for file operations
+- Mock external dependencies with pytest-mock
+
+## Salida
+Provide complete, runnable test file with proper imports.
+EOF
+```
+
+### Habilidad de revisión de PR del equipo
+
+Una habilidad que aplica estándares consistentes de revisión de PR en todo tu equipo:
+
+```bash
+mkdir -p .github/skills/pr-review
+
+cat > .github/skills/pr-review/SKILL.md << 'EOF'
+---
+name: pr-review
+description: Team-standard PR review checklist
+---
+
+# Revisión de PR
+
+Review code changes against team standards:
+
+## Lista de verificación de seguridad
+- [ ] No hardcoded secrets or API keys
+- [ ] Input validation on all user data
+- [ ] No bare except clauses
+- [ ] No sensitive data in logs
+
+## Calidad del código
+- [ ] Functions under 50 lines
+- [ ] No print statements in production code
+- [ ] Type hints on public functions
+- [ ] Context managers for file I/O
+- [ ] No TODOs without issue references
+
+## Pruebas
+- [ ] New code has tests
+- [ ] Edge cases covered
+- [ ] No skipped tests without explanation
+
+## Documentación
+- [ ] API changes documented
+- [ ] Breaking changes noted
+- [ ] README updated if needed
+
+## Formato de salida
+Provide results as:
+- ✅ PASS: Items that look good
+- ⚠️ WARN: Items that could be improved
+- ❌ FAIL: Items that must be fixed before merge
+EOF
+```
+
+### Lleva más lejos
+
+1. **Desafío de creación de skills**: Crea una skill `quick-review` que haga una lista de verificación de 3 puntos:
+ - Bare except clauses
+ - Missing type hints
+ - Unclear variable names
+
+ Pruébala preguntando: "Do a quick review of books.py"
+
+2. **Comparación de skills**: Cronométrate escribiendo manualmente un prompt detallado para una revisión de seguridad. Luego simplemente pide "Check for security issues in this file" y deja que tu skill de auditoría de seguridad se cargue automáticamente. ¿Cuánto tiempo ahorró la skill?
+
+3. **Desafío de skill para el equipo**: Piensa en la lista de verificación de revisión de código de tu equipo. ¿Podrías codificarla como una skill? Anota 3 cosas que la skill debería comprobar siempre.
+
+**Autoevaluación**: Entiendes las skills cuando puedes explicar por qué importa el campo `description` (es como Copilot decide si cargar tu skill).
+
+---
+
+## 📝 Asignación
+
+### Desafío principal: Crea una skill de resumen de libros
+
+Los ejemplos anteriores crearon las skills `pytest-gen` y `pr-review`. Ahora practica creando un tipo de skill completamente diferente: una para generar salida formateada a partir de datos.
+
+1. Lista tus skills actuales: Ejecuta Copilot y pásale `/skills list`. También puedes usar `ls .github/skills/` para ver las skills del proyecto o `ls ~/.copilot/skills/` para las skills personales.
+2. Crea una skill `book-summary` en `.github/skills/book-summary/SKILL.md` que genere un resumen en markdown formateado de la colección de libros
+3. Tu skill debe tener:
+ - Nombre y descripción claros (¡la descripción es crucial para coincidir!)
+ - Reglas de formato específicas (por ejemplo, una tabla en markdown con título, autor, año, estado de lectura)
+ - Convenciones de salida (por ejemplo, usa ✅/❌ para el estado de lectura, ordena por año)
+4. Prueba la skill: `@samples/book-app-project/data.json Summarize the books in this collection`
+5. Verifica que la skill se active automáticamente comprobando `/skills list`
+6. Intenta invocarla directamente con `/book-summary Summarize the books in this collection`
+
+**Criterio de éxito**: Tienes una skill `book-summary` funcional que Copilot aplica automáticamente cuando preguntas sobre la colección de libros.
+
+
+💡 Pistas (haz clic para expandir)
+
+**Plantilla inicial**: Crea `.github/skills/book-summary/SKILL.md`:
+
+```markdown
+---
+name: book-summary
+description: Generate a formatted markdown summary of a book collection
+---
+
+# Book Summary Generator
+
+Generate a summary of the book collection following these rules:
+
+1. Output a markdown table with columns: Title, Author, Year, Status
+2. Use ✅ for read books and ❌ for unread books
+3. Sort by year (oldest first)
+4. Include a total count at the bottom
+5. Flag any data issues (missing authors, invalid years)
+
+Example:
+| Title | Author | Year | Status |
+|-------|--------|------|--------|
+| 1984 | George Orwell | 1949 | ✅ |
+| Dune | Frank Herbert | 1965 | ❌ |
+
+**Total: 2 books (1 read, 1 unread)**
+```
+
+**Pruébalo:**
+```bash
+copilot
+> @samples/book-app-project/data.json Summarize the books in this collection
+# La habilidad debería activarse automáticamente en función de la coincidencia con la descripción
+```
+
+**Si no se activa:** Prueba `/skills reload` y pregúntalo de nuevo.
+
+
+
+### Desafío adicional: Skill de mensajes de commit
+
+1. Crea una skill `commit-message` que genere mensajes de commit convencionales con un formato consistente
+2. Pruébala preparando un cambio y preguntando: "Generate a commit message for my staged changes"
+3. Documenta tu skill y compártela en GitHub con el topic `copilot-skill`
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haz clic para expandir)
+
+### Errores comunes
+
+| Error | Qué ocurre | Solución |
+|---------|--------------|-----|
+| Naming the file something other than `SKILL.md` | Skill won't be recognized | The file must be named exactly `SKILL.md` |
+| Vague `description` field | Skill never gets loaded automatically | Description is the PRIMARY discovery mechanism. Use specific trigger words |
+| Missing `name` or `description` in frontmatter | Skill fails to load | Add both fields in YAML frontmatter |
+| Wrong folder location | Skill not found | Use `.github/skills/skill-name/` (project) or `~/.copilot/skills/skill-name/` (personal) |
+
+### Solución de problemas
+
+**Skill not being used** - If Copilot isn't using your skill when expected:
+
+1. **Check the description**: Does it match how you're asking?
+ ```markdown
+ # Bad: Too vague
+ description: Reviews code
+
+ # Good: Includes trigger words
+ description: Use for code reviews, checking code quality,
+ finding bugs, security issues, and best practice violations
+ ```
+
+2. **Verify the file location**:
+ ```bash
+ # Habilidades del proyecto
+ ls .github/skills/
+
+ # Habilidades del usuario
+ ls ~/.copilot/skills/
+ ```
+
+3. **Check SKILL.md format**: Frontmatter is required:
+ ```markdown
+ ---
+ name: skill-name
+ description: What the skill does and when to use it
+ ---
+
+ # Instructions here
+ ```
+
+**Skill not appearing** - Verify the folder structure:
+```
+.github/skills/
+└── my-skill/ # Folder name
+ └── SKILL.md # Must be exactly SKILL.md (case-sensitive)
+```
+
+Run `/skills reload` after creating or editing skills to ensure changes are picked up.
+
+**Testing if a skill loads** - Ask Copilot directly:
+```bash
+> What skills do you have available for checking code quality?
+# Copilot describirá las habilidades relevantes que encontró
+```
+
+**How do I know my skill is actually working?**
+
+1. **Check the output format**: If your skill specifies an output format (like `[CRITICAL]` tags), look for that in the response
+2. **Ask directly**: After getting a response, ask "Did you use any skills for that?"
+3. **Compare with/without**: Try the same prompt with `--no-custom-instructions` to see the difference:
+ ```bash
+ # Con habilidades
+ copilot --allow-all -p "Review @file.py for security issues"
+
+ # Sin habilidades (comparación con la línea base)
+ copilot --allow-all -p "Review @file.py for security issues" --no-custom-instructions
+ ```
+4. **Check for specific checks**: If your skill includes specific checks (like "functions over 50 lines"), see if those appear in the output
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **Las skills son automáticas**: Copilot las carga cuando tu prompt coincide con la descripción de la skill
+2. **Invocación directa**: También puedes invocar skills directamente con `/skill-name` como comando slash
+3. **Formato SKILL.md**: Frontmatter YAML (name, description, licencia opcional) más instrucciones en markdown
+4. **La ubicación importa**: `.github/skills/` para compartir en proyecto/equipo, `~/.copilot/skills/` para uso personal
+5. **La descripción es clave**: Escribe descripciones que coincidan con la forma en que preguntas de forma natural
+
+> 📋 **Referencia rápida**: Consulta la [GitHub Copilot CLI command reference](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+## ➡️ ¿Qué sigue?
+
+Las skills amplían lo que Copilot puede hacer con instrucciones cargadas automáticamente. ¿Pero qué hay de conectarse a servicios externos? Ahí es donde entra MCP.
+
+En **[Chapter 06: MCP Servers](../06-mcp-servers/README.md)**, aprenderás:
+
+- Qué es MCP (Model Context Protocol)
+- Conectar con GitHub, sistema de archivos y servicios de documentación
+- Configurar servidores MCP
+- Flujos de trabajo con múltiples servidores
+
+---
+
+**[← Volver al Capítulo 04](../04-agents-custom-instructions/README.md)** | **[Continuar al Capítulo 06 →](../06-mcp-servers/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/06-mcp-servers/README.md b/translations/es/06-mcp-servers/README.md
new file mode 100644
index 00000000..8bba82eb
--- /dev/null
+++ b/translations/es/06-mcp-servers/README.md
@@ -0,0 +1,981 @@
+
+
+> **¿Y si Copilot pudiera leer tus issues de GitHub, consultar tu base de datos y crear PRs... todo desde la terminal?**
+
+Hasta ahora, Copilot solo puede trabajar con lo que le das directamente: archivos que referencias con `@`, el historial de la conversación y sus propios datos de entrenamiento. Pero, ¿y si pudiera salir por su cuenta a comprobar tu repositorio de GitHub, explorar los archivos del proyecto o consultar la documentación más reciente de una librería?
+
+Eso es lo que hace MCP (Model Context Protocol). Es una forma de conectar Copilot con servicios externos para que tenga acceso a datos en vivo y del mundo real. Cada servicio al que Copilot se conecta se llama un "servidor MCP". En este capítulo, configurarás algunas de estas conexiones y verás cómo hacen que Copilot sea mucho más útil.
+
+> 💡 **¿Ya conoces MCP?** [Ir al inicio rápido](#-use-the-built-in-github-mcp) para confirmar que funciona y comenzar a configurar servidores.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, podrás:
+
+- Entender qué es MCP y por qué importa
+- Gestionar servidores MCP usando comandos `/mcp`
+- Configurar servidores MCP para GitHub, sistema de archivos y documentación
+- Usar flujos de trabajo potenciados por MCP con el proyecto de la app del libro
+- Saber cuándo y cómo construir un servidor MCP personalizado (opcional)
+
+> ⏱️ **Tiempo estimado**: ~50 minutos (15 min lectura + 35 min práctica)
+
+---
+
+## 🧩 Analogía del mundo real: Extensiones del navegador
+
+
+
+Piensa en los servidores MCP como extensiones del navegador. Tu navegador por sí solo puede mostrar páginas web, pero las extensiones lo conectan a servicios adicionales:
+
+| Extensión del navegador | ¿A qué se conecta? | Equivalente MCP |
+|------------------------|---------------------|-----------------|
+| Administrador de contraseñas | Tu bóveda de contraseñas | **GitHub MCP** → tus repos, issues, PRs |
+| Grammarly | Servicio de análisis de escritura | **Context7 MCP** → documentación de bibliotecas |
+| Administrador de archivos | Almacenamiento en la nube | **Filesystem MCP** → archivos locales del proyecto |
+
+Sin extensiones, tu navegador sigue siendo útil, pero con ellas, se convierte en una herramienta potente. Los servidores MCP hacen lo mismo por Copilot. Lo conectan a fuentes de datos reales y en vivo para que pueda leer tus issues de GitHub, explorar tu sistema de archivos, obtener documentación actualizada y más.
+
+***Los servidores MCP conectan a Copilot con el mundo exterior: GitHub, repositorios, documentación y más***
+
+> 💡 **Insight clave**: Sin MCP, Copilot solo puede ver los archivos que compartes explícitamente con `@`. Con MCP, puede explorar de forma proactiva tu proyecto, comprobar tu repo de GitHub y consultar documentación, todo automáticamente.
+
+---
+
+
+
+# Inicio rápido: MCP en 30 segundos
+
+## Empieza con el servidor GitHub MCP incorporado
+Veamos MCP en acción ahora mismo, antes de configurar nada.
+El servidor GitHub MCP está incluido por defecto. Prueba esto:
+
+```bash
+copilot
+> List the recent commits in this repository
+```
+
+Si Copilot devuelve datos reales de commits, acabas de ver MCP en acción. Ese es el servidor GitHub MCP conectándose a GitHub en tu nombre. Pero GitHub es solo *un* servidor. Este capítulo te muestra cómo añadir más (acceso al sistema de archivos, documentación actualizada y otros) para que Copilot pueda hacer aún más.
+
+---
+
+## El comando `/mcp show`
+
+Usa `/mcp show` para ver qué servidores MCP están configurados y si están habilitados:
+
+```bash
+copilot
+
+> /mcp show
+
+MCP Servers:
+✓ github (enabled) - GitHub integration
+✓ filesystem (enabled) - File system access
+```
+
+> 💡 **¿Solo ves el servidor GitHub?** ¡Eso es lo esperado! Si no has añadido servidores MCP adicionales todavía, GitHub es el único listado. Agregarás más en la siguiente sección.
+
+> 📚 **¿Quieres ver todos los comandos de gestión de MCP?** Puedes gestionar servidores con los comandos slash `/mcp` dentro del chat, o con `copilot mcp` directamente desde tu terminal. Consulta la [referencia completa de comandos](#-additional-mcp-commands) al final de este capítulo.
+
+
+🎬 ¡Véalo en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas diferirán de lo mostrado aquí.*
+
+
+
+---
+
+## ¿Qué cambia con MCP?
+
+Aquí está la diferencia que hace MCP en la práctica:
+
+**Sin MCP:**
+```bash
+> What's in GitHub issue #42?
+
+"I don't have access to GitHub. You'll need to copy and paste the issue content."
+```
+
+**Con MCP:**
+```bash
+> What's in GitHub issue #42 of this repository?
+
+Issue #42: El inicio de sesión falla con caracteres especiales
+Status: Open
+Labels: bug, priority-high
+Description: Users report that passwords containing...
+```
+
+MCP hace que Copilot sea consciente de tu entorno de desarrollo real.
+
+> 📚 **Documentación oficial**: [About MCP](https://docs.github.com/copilot/concepts/context/mcp) para una mirada más profunda a cómo MCP funciona con GitHub Copilot.
+
+---
+
+# Configurando servidores MCP
+
+
+
+Ahora que has visto MCP en acción, vamos a configurar servidores adicionales. Puedes añadir servidores de dos maneras: **desde el registro incorporado** (más fácil — configuración guiada directamente en la CLI) o editando el **archivo de configuración** manualmente (más flexible). Comienza con la opción del registro si no estás seguro de cuál elegir.
+
+---
+
+## Instalación de servidores MCP desde el registro
+
+La CLI tiene un registro incorporado de servidores MCP que te permite descubrir e instalar servidores populares con una configuración guiada — sin necesidad de editar JSON.
+
+```bash
+copilot
+
+> /mcp search
+```
+
+Copilot abre un selector interactivo mostrando servidores disponibles. Selecciona uno y la CLI te guía a través de cualquier configuración requerida (claves de API, rutas, etc.) y lo añade a tu configuración automáticamente.
+
+> 💡 **¿Por qué usar el registro?** Es la forma más fácil de empezar — no necesitas conocer el nombre del paquete npm, los argumentos del comando o la estructura JSON. La CLI se encarga de todo eso por ti.
+
+---
+
+## Archivo de configuración MCP
+
+Los servidores MCP se configuran en `~/.copilot/mcp-config.json` (a nivel de usuario, aplicado a todos los proyectos) o `.mcp.json` (a nivel de proyecto, colocado en la raíz de tu proyecto). Si usaste `/mcp search` arriba, la CLI ya creó o actualizó este archivo por ti, pero es útil entender el formato para personalizarlo.
+
+> ⚠️ **Nota**: `.vscode/mcp.json` ya no es compatible como fuente de configuración MCP. Si tienes un `.vscode/mcp.json` existente, migralo a `.mcp.json` en la raíz de tu proyecto. La CLI mostrará una pista de migración si detecta un archivo de configuración antiguo.
+
+```json
+{
+ "mcpServers": {
+ "server-name": {
+ "type": "local",
+ "command": "npx",
+ "args": ["@package/server-name"],
+ "tools": ["*"]
+ }
+ }
+}
+```
+
+*La mayoría de los servidores MCP se distribuyen como paquetes npm y se ejecutan mediante el comando `npx`.*
+
+
+💡 ¿Nuevo en JSON? Haz clic aquí para aprender qué significa cada campo
+
+| Campo | Qué significa |
+|-------|---------------|
+| `"mcpServers"` | Contenedor de todas tus configuraciones de servidores MCP |
+| `"server-name"` | Un nombre que eliges (p. ej., "github", "filesystem") |
+| `"type": "local"` | El servidor se ejecuta en tu máquina |
+| `"command": "npx"` | El programa a ejecutar (npx ejecuta paquetes npm) |
+| `"args": [...]` | Argumentos pasados al comando |
+| `"tools": ["*"]` | Permitir todas las herramientas de este servidor |
+
+Reglas importantes de JSON:
+- Usa comillas dobles `"` para cadenas (no comillas simples)
+- No coloques comas finales después del último elemento
+- El archivo debe ser JSON válido (usa un [validador JSON](https://jsonlint.com/) si no estás seguro)
+
+
+
+---
+
+## Añadiendo servidores MCP
+
+El servidor GitHub MCP está integrado y no requiere configuración. A continuación hay servidores adicionales que puedes añadir. **Elige lo que te interese o trabaja con ellos en orden.**
+
+| Quiero... | Ir a |
+|---|---|
+| Permitir que Copilot explore los archivos de mi proyecto | [Servidor de sistema de archivos](#servidor-de-sistema-de-archivos) |
+| Obtener documentación de bibliotecas actualizada | [Servidor Context7](#servidor-context7-documentación) |
+| Explorar extras opcionales (servidores personalizados, web_fetch) | [Más allá de lo básico](#más-allá-de-lo-básico) |
+
+
+Servidor de sistema de archivos - Permitir que Copilot explore los archivos de tu proyecto
+
+
+### Servidor de sistema de archivos
+
+```json
+{
+ "mcpServers": {
+ "filesystem": {
+ "type": "local",
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
+ "tools": ["*"]
+ }
+ }
+}
+```
+
+> 💡 **La ruta `.`**: El `.` significa "directorio actual". Copilot puede acceder a archivos en relación con donde lo iniciaste. En un Codespace, esto es la raíz de tu espacio de trabajo. También puedes usar una ruta absoluta como `/workspaces/copilot-cli-for-beginners` si lo prefieres.
+
+Añádelo a tu `~/.copilot/mcp-config.json` y reinicia Copilot.
+
+
+
+
+Servidor Context7 - Obtener documentación de bibliotecas actualizada
+
+
+### Servidor Context7 (Documentación)
+
+Context7 le da a Copilot acceso a documentación actualizada para frameworks y librerías populares. En lugar de depender de datos de entrenamiento que pueden estar desactualizados, Copilot obtiene la documentación actual real.
+
+```json
+{
+ "mcpServers": {
+ "context7": {
+ "type": "local",
+ "command": "npx",
+ "args": ["-y", "@upstash/context7-mcp"],
+ "tools": ["*"]
+ }
+ }
+}
+```
+
+- ✅ **No se requiere clave de API**
+- ✅ **No se necesita cuenta**
+- ✅ **Tu código permanece local**
+
+Añádelo a tu `~/.copilot/mcp-config.json` y reinicia Copilot.
+
+
+
+
+Más allá de lo básico - Servidores personalizados y acceso web (opcional)
+
+
+Estos son extras opcionales para cuando te sientas cómodo con los servidores principales anteriores.
+
+### Servidor MCP de Microsoft Learn
+
+Todos los servidores MCP que has visto hasta ahora (sistema de archivos, Context7) se ejecutan localmente en tu máquina. Pero los servidores MCP también pueden ejecutarse de forma remota, lo que significa que simplemente apuntas la CLI de Copilot a una URL y ella se encarga del resto. No hay `npx` ni `python`, ningún proceso local, ni dependencias que instalar.
+
+El [Microsoft Learn MCP Server](https://github.com/microsoftdocs/mcp) es un buen ejemplo. Le da a la CLI de Copilot acceso directo a la documentación oficial de Microsoft (Azure, Microsoft Foundry y otros temas de IA, .NET, Microsoft 365 y mucho más) para que pueda buscar en la documentación, obtener páginas completas y encontrar ejemplos de código oficiales en lugar de depender de los datos de entrenamiento de un modelo.
+
+- ✅ **No se requiere clave de API**
+- ✅ **No se necesita cuenta**
+- ✅ **No requiere instalación local**
+
+**Instalación rápida con `/plugin install`:**
+
+En lugar de editar tu archivo JSON manualmente, puedes instalarlo con un solo comando:
+
+```bash
+copilot
+
+> /plugin install microsoftdocs/mcp
+```
+
+Esto añade el servidor y sus skills de agente asociados automáticamente. Las skills instaladas incluyen:
+
+- **microsoft-docs**: Conceptos, tutoriales y consultas factuales
+- **microsoft-code-reference**: Búsquedas de API, ejemplos de código y resolución de problemas
+- **microsoft-skill-creator**: Una meta-skill para generar skills personalizadas sobre tecnologías de Microsoft
+
+**Uso:**
+```bash
+copilot
+
+> What's the recommended way to deploy a Python app to Azure App Service? Search Microsoft Learn.
+```
+
+📚 Más información: [Descripción general del Servidor MCP de Microsoft Learn](https://learn.microsoft.com/training/support/mcp-get-started)
+
+### Acceso web con `web_fetch`
+
+La CLI de Copilot incluye una herramienta integrada `web_fetch` que puede obtener contenido de cualquier URL. Esto es útil para traer README, documentación de API o notas de la versión sin salir de la terminal. No se necesita un servidor MCP.
+
+Puedes controlar qué URLs son accesibles mediante `~/.copilot/config.json` (configuración general de Copilot), que es independiente de `~/.copilot/mcp-config.json` (definiciones de servidores MCP).
+
+```json
+{
+ "permissions": {
+ "allowedUrls": [
+ "https://api.github.com/**",
+ "https://docs.github.com/**",
+ "https://*.npmjs.org/**"
+ ],
+ "blockedUrls": [
+ "http://**"
+ ]
+ }
+}
+```
+
+**Uso:**
+```bash
+copilot
+
+> Fetch and summarize the README from https://github.com/facebook/react
+```
+
+### Construir un servidor MCP personalizado
+
+¿Quieres conectar Copilot a tus propias APIs, bases de datos o herramientas internas? Puedes construir un servidor MCP personalizado en Python. Esto es completamente opcional, ya que los servidores preconstruidos (GitHub, sistema de archivos, Context7) cubren la mayoría de los casos de uso.
+
+📖 Consulta la [Guía de servidor MCP personalizado](mcp-custom-server.md) para un recorrido completo usando la app del libro como ejemplo.
+
+📚 Para más antecedentes, consulta el [curso MCP para principiantes](https://github.com/microsoft/mcp-for-beginners).
+
+
+
+
+
+### Archivo de configuración completo
+
+Aquí tienes un `mcp-config.json` completo con servidores de sistema de archivos y Context7:
+
+> 💡 **Nota:** GitHub MCP está integrado. No necesitas añadirlo a tu archivo de configuración.
+
+```json
+{
+ "mcpServers": {
+ "filesystem": {
+ "type": "local",
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
+ "tools": ["*"]
+ },
+ "context7": {
+ "type": "local",
+ "command": "npx",
+ "args": ["-y", "@upstash/context7-mcp"],
+ "tools": ["*"]
+ }
+ }
+}
+```
+
+Guarda esto como `~/.copilot/mcp-config.json` para acceso global o `.mcp.json` en la raíz del proyecto para una configuración específica del proyecto.
+
+---
+
+# Usando servidores MCP
+
+Ahora que tienes servidores MCP configurados, veamos qué pueden hacer.
+
+
+
+---
+
+## Ejemplos de uso del servidor
+**Elige un servidor para explorar, o recórrelos en orden.**
+
+| Quiero probar... | Ir a |
+|---|---|
+| Repositorios de GitHub, issues y PRs | [Servidor de GitHub](#servidor-de-github-integrado) |
+| Explorar archivos del proyecto | [Uso del Servidor de Sistema de Archivos](#filesystem-server-usage) |
+| Búsqueda de documentación de bibliotecas | [Uso del Servidor Context7](#context7-server-usage) |
+| Servidor personalizado, Microsoft Learn MCP y uso de web_fetch | [Más allá de lo básico](#más-allá-de-lo-básico) |
+
+
+Servidor de GitHub (Integrado) - Accede a repos, issues, PRs y más
+
+
+### Servidor de GitHub (Integrado)
+
+El servidor MCP de GitHub está **integrado**. Si iniciaste sesión en Copilot (como lo hiciste durante la configuración inicial), ya funciona. ¡No se necesita configuración!
+
+> 💡 **¿No funciona?** Ejecuta `/login` para volver a autenticarte con GitHub.
+
+
+Autenticación en contenedores de desarrollo
+
+- **GitHub Codespaces** (recomendado): La autenticación es automática. La CLI `gh` hereda tu token de Codespace. No se requiere ninguna acción.
+- **Contenedor de desarrollo local (Docker)**: Ejecuta `gh auth login` después de que el contenedor inicie, luego reinicia Copilot.
+
+**Solución de problemas de autenticación:**
+```bash
+# Comprueba si estás autenticado
+gh auth status
+
+# Si no, inicia sesión
+gh auth login
+
+# Verifica que GitHub MCP esté conectado
+copilot
+> /mcp show
+```
+
+
+
+| Función | Ejemplo |
+|---------|----------|
+| **Información del repositorio** | Ver confirmaciones, ramas, colaboradores |
+| **Issues** | Listar, crear, buscar y comentar issues |
+| **Pull requests** | Ver PRs, diffs, crear PRs, comprobar estado |
+| **Búsqueda de código** | Buscar código en varios repositorios |
+| **Actions** | Consultar ejecuciones de workflows y estado |
+
+```bash
+copilot
+
+# Ver la actividad reciente en este repositorio
+> List the last 5 commits in this repository
+
+Recent commits:
+1. abc1234 - Update chapter 05 skills examples (2 days ago)
+2. def5678 - Add book app test fixtures (3 days ago)
+3. ghi9012 - Fix typo in chapter 03 README (4 days ago)
+...
+
+# Explorar la estructura del repositorio
+> What branches exist in this repository?
+
+Branches:
+- main (default)
+- chapter6 (current)
+
+# Buscar patrones de código en todo el repositorio
+> Search this repository for files that import pytest
+
+Found 1 file:
+- samples/book-app-project/tests/test_books.py
+```
+
+> 💡 **¿Trabajando en tu propio fork?** Si creaste un fork de este repositorio del curso, también puedes intentar operaciones de escritura como crear issues y pull requests. Practicaremos eso en los ejercicios a continuación.
+
+> ⚠️ **¿No ves resultados?** El MCP de GitHub opera sobre el remoto del repositorio (en github.com), no solo en archivos locales. Asegúrate de que tu repo tenga un remoto: ejecuta `git remote -v` para comprobar.
+
+
+
+
+Servidor de sistema de archivos - Explora y analiza archivos del proyecto
+
+
+### Servidor de sistema de archivos
+
+Una vez configurado, el MCP de sistema de archivos proporciona herramientas que Copilot puede usar automáticamente:
+
+```bash
+copilot
+
+> How many Python files are in the book-app-project directory?
+
+Found 3 Python files in samples/book-app-project/:
+- book_app.py
+- books.py
+- utils.py
+
+> What's the total size of the data.json file?
+
+samples/book-app-project/data.json: 2.4 KB
+
+> Find all functions that don't have type hints in the book app
+
+Found 2 functions without type hints:
+- samples/book-app-project/utils.py:10 - get_user_choice()
+- samples/book-app-project/utils.py:14 - get_book_details()
+```
+
+
+
+
+Servidor Context7 - Buscar documentación de bibliotecas
+
+
+### Servidor Context7
+
+```bash
+copilot
+
+> What are the best practices for using pytest fixtures?
+
+From pytest Documentation:
+
+Fixtures - Use fixtures to provide a fixed baseline for tests:
+
+ import pytest
+
+ @pytest.fixture
+ def sample_books():
+ return [
+ {"title": "1984", "author": "George Orwell", "year": 1949},
+ {"title": "Dune", "author": "Frank Herbert", "year": 1965},
+ ]
+
+ def test_find_by_author(sample_books):
+ # el fixture se pasa automáticamente como argumento
+ results = [b for b in sample_books if "Orwell" in b["author"]]
+ assert len(results) == 1
+
+Best practices:
+- Use fixtures instead of setup/teardown methods
+- Use tmp_path fixture for temporary files
+- Use monkeypatch for modifying environment
+- Scope fixtures appropriately (function, class, module, session)
+
+> How can I apply this to the book app's test file?
+
+# Copilot ahora conoce los patrones oficiales de pytest
+# y puede aplicarlos a samples/book-app-project/tests/test_books.py
+```
+
+
+
+
+Más allá de lo básico - Servidor personalizado y uso de web_fetch
+
+
+### Más allá de lo básico
+
+**Servidor MCP personalizado**: Si construiste el servidor de búsqueda de libros a partir de la [Guía de servidor MCP personalizado](mcp-custom-server.md), puedes consultar tu colección de libros directamente:
+
+```bash
+copilot
+
+> Look up information about "1984" using the book lookup server. Search for books by George Orwell
+```
+
+**Microsoft Learn MCP**: Si instalaste el [servidor Microsoft Learn MCP](#servidor-mcp-de-microsoft-learn), puedes buscar la documentación oficial de Microsoft directamente:
+
+```bash
+copilot
+
+> How do I configure managed identity for an Azure Function? Search Microsoft Learn.
+```
+
+**Web Fetch**: Usa la herramienta integrada `web_fetch` para extraer contenido de cualquier URL:
+
+```bash
+copilot
+
+> Fetch and summarize the README from https://github.com/facebook/react
+```
+
+
+
+---
+
+## Flujos de trabajo con múltiples servidores
+
+Estos flujos muestran por qué los desarrolladores dicen "I never want to work without this again." Cada ejemplo combina múltiples servidores MCP en una sola sesión.
+
+
+
+*Flujo MCP completo: GitHub MCP recupera datos del repositorio, Filesystem MCP encuentra el código, Context7 MCP proporciona las mejores prácticas, y Copilot realiza el análisis*
+
+Cada ejemplo a continuación es autónomo. **Elige uno que te interese o léelos todos.**
+
+| Quiero ver... | Ir a |
+|---|---|
+| Varios servidores trabajando juntos | [Exploración Multi-Servidor](#multi-server-exploration) |
+| Ir de un issue a PR en una sesión | [Flujo de Issue a PR](#flujo-de-issue-a-pr-en-tu-propio-repo) |
+| Un chequeo rápido de salud del proyecto | [Panel de Salud](#panel-de-salud-de-la-aplicación-book) |
+
+
+Exploración Multi-Servidor - Combina el servidor de sistema de archivos, GitHub y Context7 en una sesión
+
+
+#### Explorando la aplicación Book con múltiples servidores MCP
+
+```bash
+copilot
+
+# Paso 1: Utilice el MCP del sistema de archivos para explorar la aplicación de libros
+> List all Python files in samples/book-app-project/ and summarize
+> what each file does
+
+Found 3 Python files:
+- book_app.py: CLI entry point with command routing (list, add, remove, find)
+- books.py: BookCollection class with data persistence via JSON
+- utils.py: Helper functions for user input and display
+
+# Paso 2: Utilice el MCP de GitHub para comprobar los cambios recientes
+> What were the last 3 commits that touched files in samples/book-app-project/?
+
+Recent commits affecting book app:
+1. abc1234 - Add test fixtures for BookCollection (2 days ago)
+2. def5678 - Add find_by_author method (5 days ago)
+3. ghi9012 - Initial book app setup (1 week ago)
+
+# Paso 3: Utilice el MCP de Context7 para seguir las mejores prácticas
+> What are Python best practices for JSON data persistence?
+
+From Python Documentation:
+- Use context managers (with statements) for file I/O
+- Handle JSONDecodeError for corrupted files
+- Use dataclasses for structured data
+- Consider atomic writes to prevent data corruption
+
+# Paso 4: Sintetice una recomendación
+> Based on the book app code and these best practices,
+> what improvements would you suggest?
+
+Suggestions:
+1. Add input validation in add_book() for empty strings and invalid years
+2. Consider atomic writes in save_books() to prevent data corruption
+3. Add type hints to utils.py functions (get_user_choice, get_book_details)
+```
+
+
+🎬 ¡Ve el flujo MCP en acción!
+
+
+
+*La salida de la demo varía. Tu modelo, herramientas y respuestas diferirán de lo que se muestra aquí.*
+
+
+
+**El resultado**: Exploración de código → revisión de historial → búsqueda de mejores prácticas → plan de mejoras. **Todo desde una sesión de terminal, usando tres servidores MCP juntos.**
+
+
+
+
+Flujo de Issue a PR - Pasa de un issue de GitHub a un pull request sin salir del terminal
+
+
+#### Flujo de Issue a PR (En tu propio repo)
+
+Esto funciona mejor en tu propio fork o repositorio donde tengas permisos de escritura:
+
+> 💡 **No te preocupes si no puedes probar esto ahora mismo.** Si estás en un clon de solo lectura, practicarás esto en la tarea. Por ahora, solo lee para entender el flujo.
+
+```bash
+copilot
+
+> Get the details of GitHub issue #1
+
+Issue #1: Agregar validación de entrada para el año del libro
+Status: Open
+Description: The add_book function accepts any year value...
+
+> @samples/book-app-project/books.py Fix the issue described in issue #1
+
+[Copilot implements year validation in add_book()]
+
+> Run the tests to make sure the fix works
+
+All 8 tests passed ✓
+
+> Create a pull request titled "Add year validation to book app"
+
+✓ Created PR #2: Agregar validación del año para la aplicación de libros
+```
+
+**Cero copiar-pegar. Cero cambio de contexto. Una sesión de terminal.**
+
+
+
+
+Panel de Salud - Obtén un chequeo rápido de la salud del proyecto usando múltiples servidores
+
+
+#### Panel de Salud de la Aplicación Book
+
+```bash
+copilot
+
+> Give me a health report for the book app project:
+> 1. List all functions across the Python files in samples/book-app-project/
+> 2. Check which functions have type hints and which don't
+> 3. Show what tests exist in samples/book-app-project/tests/
+> 4. Check the recent commit history for this directory
+
+Book App Health Report
+======================
+
+📊 Functions Found:
+- books.py: 8 methods in BookCollection (all have type hints ✓)
+- book_app.py: 6 functions (4 have type hints, 2 missing)
+- utils.py: 3 functions (1 has type hints, 2 missing)
+
+🧪 Test Coverage:
+- test_books.py: 8 test functions covering BookCollection
+- Missing: no tests for book_app.py CLI functions
+- Missing: no tests for utils.py helper functions
+
+📝 Recent Activity:
+- 3 commits in the last week
+- Most recent: added test fixtures
+
+Recommendations:
+- Add type hints to utils.py functions
+- Add tests for book_app.py CLI handlers
+- All files well-sized (<100 lines) - good structure!
+```
+
+**El resultado**: Múltiples fuentes de datos agregadas en segundos. Manualmente, esto significaría ejecutar grep, contar líneas, revisar git log y navegar por archivos de tests. Fáciles más de 15 minutos de trabajo.
+
+
+
+---
+
+# Práctica
+
+
+
+**🎉 ¡Ahora conoces lo esencial!** Entiendes MCP, has visto cómo configurar servidores y has visto flujos de trabajo reales en acción. Ahora es hora de intentarlo tú mismo.
+
+---
+
+## ▶️ Pruébalo tú mismo
+
+¡Ahora es tu turno! Completa estos ejercicios para practicar el uso de servidores MCP con el proyecto de la aplicación Book.
+
+### Ejercicio 1: Comprueba el estado de tu MCP
+
+Comienza viendo qué servidores MCP están disponibles:
+
+```bash
+copilot
+
+> /mcp show
+```
+
+Deberías ver el servidor de GitHub listado como habilitado. Si no, ejecuta `/login` para autenticarte.
+
+---
+
+### Ejercicio 2: Explora la aplicación Book con el MCP de sistema de archivos
+
+Si has configurado el servidor de sistema de archivos, úsalo para explorar la aplicación Book:
+
+```bash
+copilot
+
+> How many Python files are in samples/book-app-project/?
+> What functions are defined in each file?
+```
+
+**Resultado esperado**: Copilot lista `book_app.py`, `books.py` y `utils.py` con sus funciones.
+
+> 💡 **¿No tienes aún configurado el MCP de sistema de archivos?** Crea el archivo de configuración desde la sección de [Configuración completa](#archivo-de-configuración-completo) de arriba. Luego reinicia Copilot.
+
+---
+
+### Ejercicio 3: Consulta el historial del repositorio con GitHub MCP
+
+Usa el MCP de GitHub integrado para explorar este repositorio del curso:
+
+```bash
+copilot
+
+> List the last 5 commits in this repository
+
+> What branches exist in this repository?
+```
+
+**Resultado esperado**: Copilot muestra mensajes de commits recientes y nombres de ramas del remoto de GitHub.
+
+> ⚠️ **¿En un Codespace?** Esto funciona automáticamente. La autenticación se hereda. Si estás en un clon local, asegúrate de que `gh auth status` muestre que has iniciado sesión.
+
+---
+
+### Ejercicio 4: Combina múltiples servidores MCP
+
+Ahora combina el MCP de sistema de archivos y el de GitHub en una sola sesión:
+
+```bash
+copilot
+
+> Read samples/book-app-project/data.json and tell me what books are
+> in the collection. Then check the recent commits to see when this
+> file was last modified.
+```
+
+**Resultado esperado**: Copilot lee el archivo JSON (MCP de sistema de archivos), lista los 5 libros incluyendo "The Hobbit", "1984", "Dune", "To Kill a Mockingbird" y "Mysterious Book", luego consulta GitHub por el historial de commits.
+
+**Autoevaluación**: Entiendes MCP cuando puedas explicar por qué "Check my repo's commit history" es mejor que ejecutar manualmente `git log` y pegar la salida en tu prompt.
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Exploración MCP de la aplicación Book
+
+Practica usar servidores MCP juntos en el proyecto de la aplicación Book. Completa estos pasos en una sola sesión de Copilot:
+
+1. **Verificar que MCP funciona**: Ejecuta `/mcp show` y confirma que al menos el servidor de GitHub esté habilitado
+2. **Configurar el MCP de sistema de archivos** (si no está hecho): Crea `~/.copilot/mcp-config.json` con la configuración del servidor de sistema de archivos
+3. **Explorar el código**: Pídele a Copilot que use el servidor de sistema de archivos para:
+ - Listar todas las funciones en `samples/book-app-project/books.py`
+ - Comprobar qué funciones en `samples/book-app-project/utils.py` no tienen anotaciones de tipo
+ - Leer `samples/book-app-project/data.json` e identificar cualquier problema de calidad de datos (pista: mira la última entrada)
+4. **Comprobar la actividad del repositorio**: Pídele a Copilot que use el MCP de GitHub para:
+ - Listar commits recientes que tocaron archivos en `samples/book-app-project/`
+ - Comprobar si hay issues o pull requests abiertos
+5. **Combinar servidores**: En un solo prompt, pídele a Copilot que:
+ - Leer el archivo de tests en `samples/book-app-project/tests/test_books.py`
+ - Comparar las funciones probadas con todas las funciones en `books.py`
+ - Resumir qué cobertura de tests falta
+
+**Criterios de éxito**: Puedes combinar sin problemas datos del MCP de sistema de archivos y de GitHub en una sola sesión de Copilot, y puedes explicar qué contribuyó cada servidor MCP a la respuesta.
+
+
+💡 Pistas (haz clic para expandir)
+
+**Paso 1: Verificar MCP**
+```bash
+copilot
+> /mcp show
+# Debería mostrar "github" como habilitado
+# Si no, ejecute: /login
+```
+
+**Paso 2: Crear el archivo de configuración**
+
+Usa el JSON de la sección [Configuración completa](#archivo-de-configuración-completo) de arriba y guárdalo como `~/.copilot/mcp-config.json`.
+
+**Paso 3: Problema de calidad de datos a buscar**
+
+El último libro en `data.json` es:
+```json
+{
+ "title": "Mysterious Book",
+ "author": "",
+ "year": 0,
+ "read": false
+}
+```
+Un autor vacío y año 0. ¡Ese es el problema de calidad de datos!
+
+**Paso 5: Comparación de cobertura de tests**
+
+Los tests en `test_books.py` cubren: `add_book`, `mark_as_read`, `remove_book`, `get_unread_books`, y `find_book_by_title`. Funciones como `load_books`, `save_books`, y `list_books` no tienen tests directos. Las funciones de CLI en `book_app.py` y los helpers en `utils.py` no tienen tests en absoluto.
+
+**Si MCP no funciona:** Reinicia Copilot después de editar el archivo de configuración.
+
+
+
+### Desafío adicional: Construir un MCP personalizado
+
+¿Listo para profundizar? Sigue la [Guía de servidor MCP personalizado](mcp-custom-server.md) para construir tu propio servidor MCP en Python que se conecte a cualquier API.
+
+---
+
+
+🔧 Errores comunes y solución de problemas (haz clic para expandir)
+
+### Errores comunes
+
+| Error | Qué sucede | Solución |
+|---------|--------------|-----|
+| No saber que el MCP de GitHub está integrado | Intentar instalar/configurarlo manualmente | El MCP de GitHub está incluido por defecto. Simplemente intenta: "Lista los commits recientes en este repo" |
+| Buscar la configuración en la ubicación equivocada | No puedes encontrar o editar la configuración MCP | La configuración a nivel de usuario está en `~/.copilot/mcp-config.json`, la del proyecto está en `.mcp.json` en la raíz del proyecto |
+| JSON inválido en el archivo de configuración | Los servidores MCP no se cargan | Usa `/mcp show` para comprobar la configuración; valida la sintaxis JSON |
+| Olvidar autenticar los servidores MCP | Errores de "Authentication failed" | Algunos MCP requieren autenticación separada. Revisa los requisitos de cada servidor |
+
+### Solución de problemas
+
+**"Servidor MCP no encontrado"** - Comprueba que:
+1. El paquete npm existe: `npm view @modelcontextprotocol/server-github`
+2. Tu configuración es JSON válido
+3. El nombre del servidor coincide con tu configuración
+
+Usa `/mcp show` para ver la configuración actual.
+
+**"Autenticación de GitHub fallida"** - El MCP integrado de GitHub usa tus credenciales de `/login`. Prueba:
+
+```bash
+copilot
+> /login
+```
+
+Esto te re-autenticará con GitHub. Si los problemas persisten, verifica que tu cuenta de GitHub tenga los permisos necesarios para el repositorio al que intentas acceder.
+
+**"El servidor MCP falló al iniciar"** - Revisa los logs del servidor:
+```bash
+# Ejecuta manualmente el comando del servidor para ver los errores
+npx -y @modelcontextprotocol/server-github
+```
+
+**Las herramientas MCP no están disponibles** - Asegúrate de que el servidor esté habilitado:
+```bash
+copilot
+
+> /mcp show
+# Comprobar si el servidor está listado y habilitado
+```
+
+
+Si un servidor está deshabilitado, consulte los [comandos adicionales `/mcp`](#-additional-mcp-commands) a continuación para saber cómo volver a habilitarlo.
+
+
+
+---
+
+
+📚 Comandos MCP adicionales (haz clic para expandir)
+
+
+Puedes administrar servidores MCP de dos maneras: usando **comandos slash dentro de una sesión de chat**, o usando el **comando `copilot mcp` directamente en tu terminal** (no se necesita sesión de chat).
+
+### Opción 1: Comandos slash (dentro de una sesión de chat)
+
+Funcionan cuando ya estás dentro de `copilot`:
+
+| Command | What It Does |
+|---------|--------------|
+| `/mcp show` | Mostrar todos los servidores MCP configurados y su estado |
+| `/mcp add` | Configuración interactiva para agregar un nuevo servidor |
+| `/mcp edit ` | Editar la configuración de un servidor existente |
+| `/mcp enable ` | Habilitar un servidor deshabilitado (persiste entre sesiones) |
+| `/mcp disable ` | Deshabilitar un servidor (persiste entre sesiones) |
+| `/mcp delete ` | Eliminar un servidor de forma permanente |
+| `/mcp auth ` | Reautenticar con un servidor MCP que utiliza OAuth (por ejemplo, después de cambiar de cuenta) |
+
+### Opción 2: comando `copilot mcp` (desde tu terminal)
+
+También puedes administrar servidores MCP directamente desde tu terminal sin iniciar primero una sesión de chat:
+
+```bash
+# Listar todos los servidores MCP configurados
+copilot mcp list
+
+# Habilitar un servidor
+copilot mcp enable filesystem
+
+# Deshabilitar un servidor
+copilot mcp disable context7
+```
+
+> 💡 **¿Cuándo usar cada uno?** Usa los comandos slash `/mcp` cuando ya estés en una sesión de chat. Usa `copilot mcp` desde la terminal cuando quieras revisar o cambiar rápidamente la configuración de tus servidores antes de iniciar una sesión.
+
+Para la mayor parte de este curso, `/mcp show` es todo lo que necesitas. Los otros comandos se vuelven útiles a medida que administras más servidores con el tiempo.
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **MCP** conecta Copilot con servicios externos (GitHub, sistema de archivos, documentación)
+2. **El MCP de GitHub está integrado** - no se necesita configuración, solo `/login`
+3. **El sistema de archivos y Context7** se configuran a través de `~/.copilot/mcp-config.json`
+4. **Flujos de trabajo con múltiples servidores** combinan datos de múltiples fuentes en una sola sesión
+5. **Administra servidores de dos maneras**: usa los comandos slash `/mcp` dentro del chat, o `copilot mcp` desde la terminal
+6. **Servidores personalizados** te permiten conectar cualquier API (opcional, cubierto en la guía del apéndice)
+
+> 📋 **Referencia rápida**: Consulta la [Referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para obtener una lista completa de comandos y atajos.
+
+---
+
+## ➡️ ¿Qué sigue?
+
+Ahora tienes todos los bloques de construcción: modos, contexto, flujos de trabajo, agentes, habilidades y MCP. Es hora de juntarlos todos.
+
+En **[Capítulo 07: Uniendo todo](../07-putting-it-together/README.md)**, aprenderás:
+
+- Combinar agentes, habilidades y MCP en flujos de trabajo unificados
+- Desarrollo completo de una característica desde la idea hasta el PR fusionado
+- Automatización con ganchos
+- Mejores prácticas para entornos de equipo
+
+---
+
+**[← Volver al Capítulo 05](../05-skills/README.md)** | **[Continuar al Capítulo 07 →](../07-putting-it-together/README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/06-mcp-servers/mcp-custom-server.md b/translations/es/06-mcp-servers/mcp-custom-server.md
new file mode 100644
index 00000000..884056d5
--- /dev/null
+++ b/translations/es/06-mcp-servers/mcp-custom-server.md
@@ -0,0 +1,183 @@
+# Construyendo un servidor MCP personalizado
+
+> ⚠️ **Este contenido es completamente opcional.** Puedes ser muy productivo con Copilot CLI usando únicamente los servidores MCP preconstruidos (GitHub, filesystem, Context7). Esta guía es para desarrolladores que desean conectar Copilot a APIs internas personalizadas. Consulta el [Curso MCP para Principiantes](https://github.com/microsoft/mcp-for-beginners) para más detalles.
+>
+> **Requisitos previos:**
+> - Familiaridad con Python
+> - Comprensión de los patrones `async`/`await`
+> - `pip` disponible en tu sistema (incluido en este contenedor de desarrollo)
+>
+> **[← Volver al Capítulo 06: Servidores MCP](README.md)**
+
+---
+
+¿Quieres conectar Copilot a tus propias APIs? Aquí tienes cómo construir un servidor MCP sencillo en Python que busca información de libros, relacionado con el proyecto de la app de libros que has estado usando a lo largo de este curso.
+
+## Configuración del proyecto
+
+```bash
+mkdir book-lookup-mcp-server
+cd book-lookup-mcp-server
+pip install mcp
+```
+
+> 💡 **¿Qué es el paquete `mcp`?** Es el SDK oficial de Python para construir servidores MCP. Maneja los detalles del protocolo para que puedas concentrarte en tus herramientas.
+
+## Implementación del servidor
+
+Crea un archivo llamado `server.py`:
+
+```python
+# server.py
+import json
+from mcp.server.fastmcp import FastMCP
+
+# Crear el servidor MCP
+mcp = FastMCP("book-lookup")
+
+# Base de datos de libros de ejemplo (en un servidor real, esto podría consultar una API o una base de datos)
+BOOKS_DB = {
+ "978-0-547-92822-7": {
+ "title": "The Hobbit",
+ "author": "J.R.R. Tolkien",
+ "year": 1937,
+ "genre": "Fantasy",
+ },
+ "978-0-451-52493-5": {
+ "title": "1984",
+ "author": "George Orwell",
+ "year": 1949,
+ "genre": "Dystopian Fiction",
+ },
+ "978-0-441-17271-9": {
+ "title": "Dune",
+ "author": "Frank Herbert",
+ "year": 1965,
+ "genre": "Science Fiction",
+ },
+}
+
+
+@mcp.tool()
+def lookup_book(isbn: str) -> str:
+ """Look up a book by its ISBN and return title, author, year, and genre."""
+ book = BOOKS_DB.get(isbn)
+ if book:
+ return json.dumps(book, indent=2)
+ return f"No book found with ISBN: {isbn}"
+
+
+@mcp.tool()
+def search_books(query: str) -> str:
+ """Search for books by title or author. Returns all matching results."""
+ query_lower = query.lower()
+ results = [
+ {**book, "isbn": isbn}
+ for isbn, book in BOOKS_DB.items()
+ if query_lower in book["title"].lower()
+ or query_lower in book["author"].lower()
+ ]
+ if results:
+ return json.dumps(results, indent=2)
+ return f"No books found matching: {query}"
+
+
+@mcp.tool()
+def list_all_books() -> str:
+ """List all books in the database with their ISBNs."""
+ books_list = [
+ {"isbn": isbn, "title": book["title"], "author": book["author"]}
+ for isbn, book in BOOKS_DB.items()
+ ]
+ return json.dumps(books_list, indent=2)
+
+
+if __name__ == "__main__":
+ mcp.run()
+```
+
+**Qué está pasando aquí:**
+
+| Parte | Qué hace |
+|------|-------------|
+| `FastMCP("book-lookup")` | Crea un servidor llamado "book-lookup" |
+| `@mcp.tool()` | Registra una función como herramienta que Copilot puede invocar |
+| Type hints + docstrings | Indican a Copilot qué hace cada herramienta y qué parámetros necesita |
+| `mcp.run()` | Inicia el servidor y escucha solicitudes |
+
+> 💡 **¿Por qué decoradores?** El decorador `@mcp.tool()` es todo lo que necesitas. El SDK de MCP lee automáticamente el nombre de tu función, las anotaciones de tipo y el docstring para generar el esquema de la herramienta. ¡No se necesita un esquema JSON manual!
+
+## Configuración
+
+Agrega a tu `~/.copilot/mcp-config.json`:
+
+```json
+{
+ "mcpServers": {
+ "book-lookup": {
+ "type": "local",
+ "command": "python3",
+ "args": ["./book-lookup-mcp-server/server.py"],
+ "tools": ["*"]
+ }
+ }
+}
+```
+
+## Uso
+
+```bash
+copilot
+
+> Look up the book with ISBN 978-0-547-92822-7
+
+{
+ "title": "The Hobbit",
+ "author": "J.R.R. Tolkien",
+ "year": 1937,
+ "genre": "Fantasy"
+}
+
+> Search for books by Orwell
+
+[
+ {
+ "title": "1984",
+ "author": "George Orwell",
+ "year": 1949,
+ "genre": "Dystopian Fiction",
+ "isbn": "978-0-451-52493-5"
+ }
+]
+
+> List all available books
+
+[Shows all books in the database with ISBNs]
+```
+
+## Siguientes pasos
+
+Una vez que hayas construido un servidor básico, puedes:
+
+1. **Agregar más herramientas** - Cada función `@mcp.tool()` se convierte en una herramienta que Copilot puede invocar
+2. **Conectar APIs reales** - Reemplaza la base simulada `BOOKS_DB` con llamadas a APIs reales o consultas a bases de datos
+3. **Agregar autenticación** - Maneja claves de API y tokens de forma segura
+4. **Compartir tu servidor** - Publícalo en PyPI para que otros puedan instalarlo con `pip`
+
+## Recursos
+
+- [SDK de MCP para Python](https://github.com/modelcontextprotocol/python-sdk)
+- [SDK de MCP para TypeScript](https://github.com/modelcontextprotocol/typescript-sdk)
+- [Servidores MCP de ejemplo](https://github.com/modelcontextprotocol/servers)
+- [Curso MCP para Principiantes](https://github.com/microsoft/mcp-for-beginners)
+
+---
+
+**[← Volver al Capítulo 06: Servidores MCP](README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/07-putting-it-together/README.md b/translations/es/07-putting-it-together/README.md
new file mode 100644
index 00000000..d7884b10
--- /dev/null
+++ b/translations/es/07-putting-it-together/README.md
@@ -0,0 +1,519 @@
+
+
+> **Todo lo que aprendiste se combina aquí. Pasa de la idea a un PR fusionado en una sola sesión.**
+
+En este capítulo, reunirás todo lo que aprendiste en flujos de trabajo completos. Construirás funciones usando colaboración multi-agente, configurarás hooks de pre-commit que detectan problemas de seguridad antes de que se cometan, integrarás Copilot en pipelines de CI/CD y pasarás de la idea de una característica a un PR fusionado en una sola sesión de terminal. Aquí es donde GitHub Copilot CLI se convierte en un verdadero multiplicador de fuerza.
+
+> 💡 **Nota**: Este capítulo muestra cómo combinar todo lo que aprendiste. **No necesitas agents, skills o MCP para ser productivo (aunque pueden ser muy útiles).** El flujo de trabajo central — describir, planear, implementar, probar, revisar, enviar — funciona solo con las funciones integradas de los Capítulos 00-03.
+
+## 🎯 Objetivos de aprendizaje
+
+Al final de este capítulo, serás capaz de:
+
+- Combine agents, skills y MCP en flujos de trabajo unificados
+- Construir funciones completas usando enfoques multi-herramienta
+- Configurar automatización básica con hooks
+- Aplicar mejores prácticas para el desarrollo profesional
+
+> ⏱️ **Tiempo estimado**: ~75 minutos (15 min lectura + 60 min práctica)
+
+---
+
+## 🧩 Analogía del mundo real: La Orquesta
+
+
+
+Una orquesta sinfónica tiene muchas secciones:
+- **Cuerdas** proporcionan la base (como tus flujos de trabajo centrales)
+- **Metales** añaden potencia (como agents con experiencia especializada)
+- **Maderas** añaden color (como skills que extienden capacidades)
+- **Percusión** mantiene el ritmo (como MCP conectando con sistemas externos)
+
+Individualmente, cada sección suena limitada. Juntas, bien dirigidas, crean algo magnífico.
+
+**¡Eso es lo que enseña este capítulo!**
+*Como un director con una orquesta, orquestas agents, skills y MCP en flujos de trabajo unificados*
+
+Comencemos recorriendo un escenario que modifica código, genera pruebas, lo revisa y crea un PR — todo en una sesión.
+
+---
+
+## De la idea a un PR fusionado en una sola sesión
+
+En lugar de alternar entre tu editor, terminal, ejecutor de pruebas y la UI de GitHub y perder contexto en cada cambio, puedes combinar todas tus herramientas en una sesión de terminal. Desglosaremos este patrón en la sección de [Patrón de Integración](#the-integration-pattern-for-power-users) más abajo.
+
+```bash
+# Iniciar Copilot en modo interactivo
+copilot
+
+> I need to add a "list unread" command to the book app that shows only
+> books where read is False. What files need to change?
+
+# Copilot crea un plan de alto nivel...
+
+# CAMBIAR AL AGENTE PYTHON-REVIEWER
+> /agent
+# Seleccionar "python-reviewer"
+
+> @samples/book-app-project/books.py Design a get_unread_books method.
+> What is the best approach?
+
+# El agente python-reviewer produce:
+# - Firma del método y tipo de retorno
+# - Implementación del filtro usando comprensión de listas
+# - Manejo de casos límite para colecciones vacías
+
+# CAMBIAR AL AGENTE PYTEST-HELPER
+> /agent
+# Seleccionar "pytest-helper"
+
+> @samples/book-app-project/tests/test_books.py Design test cases for
+> filtering unread books.
+
+# El agente pytest-helper produce:
+# - Casos de prueba para colecciones vacías
+# - Casos de prueba con libros leídos/no leídos mezclados
+# - Casos de prueba con todos los libros leídos
+
+# IMPLEMENTAR
+> Add a get_unread_books method to BookCollection in books.py
+> Add a "list unread" command option in book_app.py
+> Update the help text in the show_help function
+
+# PROBAR
+> Generate comprehensive tests for the new feature
+
+# Se generan múltiples pruebas similares a las siguientes:
+# - Caso feliz (3 pruebas) — filtra correctamente, excluye los leídos, incluye los no leídos
+# - Casos límite (4 pruebas) — colección vacía, todos leídos, ninguno leído, libro único
+# - Parametrizados (5 casos) — variando las proporciones leídos/no leídos mediante @pytest.mark.parametrize
+# - Integración (4 pruebas) — interacción con mark_as_read, remove_book, add_book y la integridad de los datos
+
+# Revisar los cambios
+> /review
+
+# Si la revisión pasa, usa /pr para operar sobre el pull request de la rama actual
+> /pr [view|create|fix|auto]
+
+# O pide de forma natural si quieres que Copilot lo redacte desde la terminal
+> Create a pull request titled "Feature: Add list unread books command"
+```
+
+**Enfoque tradicional**: Cambiar entre editor, terminal, ejecutor de pruebas, documentación y la UI de GitHub. Cada cambio provoca pérdida de contexto y fricción.
+
+**La idea clave**: Dirigiste a especialistas como un arquitecto. Ellos se encargaron de los detalles. Tú te encargaste de la visión.
+
+> 💡 **Ir más lejos**: Para planes multi-paso grandes como este, prueba `/fleet` para permitir que Copilot ejecute subtareas independientes en paralelo. Consulta la [documentación oficial](https://docs.github.com/copilot/concepts/agents/copilot-cli/fleet) para más detalles.
+
+---
+
+# Flujos de trabajo adicionales
+
+
+
+Para usuarios avanzados que completaron los Capítulos 04-06, estos flujos muestran cómo agents, skills y MCP multiplican tu efectividad.
+
+## El Patrón de Integración
+
+Aquí está el modelo mental para combinar todo:
+
+
+
+---
+
+## Flujo de trabajo 1: Investigación y corrección de bugs
+
+Corrección de bugs del mundo real con integración completa de herramientas:
+
+```bash
+copilot
+
+# FASE 1: Entender el error desde GitHub (MCP proporciona esto)
+> Get the details of issue #1
+
+# Aprender: "find_by_author no funciona con nombres parciales"
+
+# FASE 2: Investigar las mejores prácticas (investigación profunda con fuentes web y GitHub)
+> /research Best practices for Python case-insensitive string matching
+
+# FASE 3: Encontrar código relacionado
+> @samples/book-app-project/books.py Show me the find_by_author method
+
+# FASE 4: Obtener análisis experto
+> /agent
+# Seleccionar "python-reviewer"
+
+> Analyze this method for issues with partial name matching
+
+# El agente identifica: el método usa igualdad exacta en lugar de coincidencia por subcadenas
+
+# FASE 5: Corregir con la orientación del agente
+> Implement the fix using lowercase comparison and 'in' operator
+
+# FASE 6: Generar pruebas
+> /agent
+# Seleccionar "pytest-helper"
+
+> Generate pytest tests for find_by_author with partial matches
+> Include test cases: partial name, case variations, no matches
+
+# FASE 7: Commit y pull request
+> Generate a commit message for this fix
+
+> Create a pull request linking to issue #1
+```
+
+---
+
+## Flujo de trabajo 2: Automatización de revisión de código (Opcional)
+
+> 💡 **Esta sección es opcional.** Los hooks de pre-commit son útiles para equipos pero no son requeridos para ser productivo. Omite esto si recién estás empezando.
+>
+> ⚠️ **Nota de rendimiento**: Este hook llama a `copilot -p` por cada archivo staged, lo cual toma varios segundos por archivo. Para commits grandes, considera limitar a archivos críticos o ejecutar revisiones manualmente con `/review` en su lugar.
+
+Un **git hook** es un script que Git ejecuta automáticamente en ciertos puntos. Por ejemplo, justo antes de un commit. Puedes usar esto para ejecutar comprobaciones automatizadas en tu código. Aquí tienes cómo configurar una revisión automática de Copilot en tus commits:
+
+```bash
+# Crear un hook de pre-commit
+cat > .git/hooks/pre-commit << 'EOF'
+#!/bin/bash
+
+# Obtener archivos preparados (solo archivos Python)
+STAGED=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.py$')
+
+if [ -n "$STAGED" ]; then
+ echo "Running Copilot review on staged files..."
+
+ for file in $STAGED; do
+ echo "Reviewing $file..."
+
+ # Usar timeout para evitar que se quede colgado (60 segundos por archivo)
+ # --allow-all aprueba automáticamente lecturas/escrituras de archivos para que el hook pueda ejecutarse sin supervisión.
+ # Usar esto solo en scripts automatizados. En sesiones interactivas, deje que Copilot solicite permiso.
+ REVIEW=$(timeout 60 copilot --allow-all -p "Quick security review of @$file - critical issues only" 2>/dev/null)
+
+ # Comprobar si ocurrió un timeout
+ if [ $? -eq 124 ]; then
+ echo "Warning: Review timed out for $file (skipping)"
+ continue
+ fi
+
+ if echo "$REVIEW" | grep -qi "CRITICAL"; then
+ echo "Critical issues found in $file:"
+ echo "$REVIEW"
+ exit 1
+ fi
+ done
+
+ echo "Review passed"
+fi
+EOF
+
+chmod +x .git/hooks/pre-commit
+```
+
+> ⚠️ **Usuarios de macOS**: El comando `timeout` no está incluido por defecto en macOS. Instálalo con `brew install coreutils` o reemplaza `timeout 60` con una invocación simple sin límite de tiempo.
+
+> 📚 **Documentación oficial**: [Use hooks](https://docs.github.com/copilot/how-tos/copilot-cli/use-hooks) y [Hooks configuration reference](https://docs.github.com/copilot/reference/hooks-configuration) para la API completa de hooks.
+>
+> 💡 **Alternativa integrada**: Copilot CLI también tiene un sistema de hooks integrado (`copilot hooks`) que puede ejecutarse automáticamente en eventos como pre-commit. El hook manual de git anterior te da control total, mientras que el sistema integrado es más sencillo de configurar. Consulta la documentación anterior para decidir qué enfoque encaja mejor con tu flujo de trabajo.
+
+Ahora cada commit recibe una revisión rápida de seguridad:
+
+```bash
+git add samples/book-app-project/books.py
+git commit -m "Update book collection methods"
+
+# Salida:
+# Ejecutando la revisión de Copilot en los archivos en el área de preparación...
+# Revisando samples/book-app-project/books.py...
+# Se encontraron problemas críticos en samples/book-app-project/books.py:
+# - Línea 15: Vulnerabilidad de inyección de ruta de archivo en load_from_file
+#
+# Corrige el problema y vuelve a intentarlo.
+```
+
+---
+
+## Flujo de trabajo 3: Incorporación a una nueva base de código
+
+Al unirte a un nuevo proyecto, combina contexto, agents y MCP para incorporarte rápido:
+
+```bash
+# Iniciar Copilot en modo interactivo
+copilot
+
+# FASE 1: Obtener la visión general con contexto
+> @samples/book-app-project/ Explain the high-level architecture of this codebase
+
+# FASE 2: Comprender un flujo específico
+> @samples/book-app-project/book_app.py Walk me through what happens
+> when a user runs "python book_app.py add"
+
+# FASE 3: Obtener un análisis experto con un agente
+> /agent
+# Seleccionar "python-reviewer"
+
+> @samples/book-app-project/books.py Are there any design issues,
+> missing error handling, or improvements you would recommend?
+
+# FASE 4: Encontrar algo en lo que trabajar (MCP proporciona acceso a GitHub)
+> List open issues labeled "good first issue"
+
+# FASE 5: Comenzar a contribuir
+> Pick the simplest open issue and outline a plan to fix it
+```
+
+Este flujo de trabajo combina `@` context, agents y MCP en una única sesión de incorporación, exactamente el patrón de integración visto anteriormente en este capítulo.
+
+---
+
+# Mejores prácticas y automatización
+
+Patrones y hábitos que hacen tus flujos de trabajo más efectivos.
+
+---
+
+## Mejores prácticas
+
+### 1. Comienza con el contexto antes del análisis
+
+Siempre reúne contexto antes de pedir análisis:
+
+```bash
+# Bueno
+> Get the details of issue #42
+> /agent
+# Seleccionar python-reviewer
+> Analyze this issue
+
+# Menos efectivo
+> /agent
+# Seleccionar python-reviewer
+> Fix login bug
+# El agente no tiene contexto del problema
+```
+
+### 2. Conoce la diferencia: Agents, Skills e Instrucciones personalizadas
+
+Cada herramienta tiene su punto fuerte:
+
+```bash
+# Agentes: Personas especializadas que activas explícitamente
+> /agent
+# Selecciona python-reviewer
+> Review this authentication code for security issues
+
+# Habilidades: Capacidades modulares que se activan automáticamente cuando tu prompt
+# coincide con la descripción de la habilidad (debes crearla primero — ver Cap. 05)
+> Generate comprehensive tests for this code
+# Si tienes configurada una habilidad de pruebas, ésta se activa automáticamente
+
+# Instrucciones personalizadas (.github/copilot-instructions.md): Siempre activas
+# orientación que se aplica a cada sesión sin necesidad de cambiar o activar
+```
+
+> 💡 **Punto clave**: Agents y skills pueden tanto analizar COMO generar código. La verdadera diferencia es **cómo se activan** — los agents son explícitos (`/agent`), los skills son automáticos (se activan por coincidencia del prompt), y las instrucciones personalizadas están siempre activas.
+
+### 3. Mantén las sesiones enfocadas
+
+Usa `/rename` para etiquetar tu sesión (hace fácil encontrarla en el historial) y `/exit` para terminarla limpiamente:
+
+```bash
+# Bien: Una característica por sesión
+> /rename list-unread-feature
+# Trabajar en la lista de elementos no leídos
+> /exit
+
+copilot
+> /rename export-csv-feature
+# Trabajar en la exportación a CSV
+> /exit
+
+# Menos efectivo: Todo en una sola sesión larga
+```
+
+### 4. Haz que los flujos de trabajo sean reutilizables con Copilot
+
+En lugar de solo documentar flujos en un wiki, codifícalos directamente en tu repo donde Copilot pueda usarlos:
+
+- **Instrucciones personalizadas** (`.github/copilot-instructions.md`): Guía siempre activa para estándares de codificación, reglas de arquitectura y pasos de build/test/deploy. Cada sesión las sigue automáticamente.
+- **Archivos de prompt** (`.github/prompts/`): Prompts reutilizables y parametrizados que tu equipo puede compartir — como plantillas para revisiones de código, generación de componentes o descripciones de PR.
+- **Agents personalizados** (`.github/agents/`): Codifica personas especializadas (por ejemplo, un revisor de seguridad o un redactor de documentación) que cualquiera del equipo puede activar con `/agent`.
+- **Skills personalizados** (`.github/skills/`): Empaqueta instrucciones paso a paso que se auto-activan cuando son relevantes.
+
+> 💡 **La recompensa**: Los nuevos miembros del equipo obtienen tus flujos de trabajo gratis — están integrados en el repo, no atrapados en la cabeza de alguien.
+
+---
+
+## Bonus: Patrones de producción
+
+Estos patrones son opcionales pero valiosos para entornos profesionales.
+
+### Generador de descripción de PR
+
+```bash
+# Generar descripciones completas de PR
+BRANCH=$(git branch --show-current)
+COMMITS=$(git log main..$BRANCH --oneline)
+
+copilot -p "Generate a PR description for:
+Branch: $BRANCH
+Commits:
+$COMMITS
+
+Include: Summary, Changes Made, Testing Done, Screenshots Needed"
+```
+
+### Integración CI/CD
+
+Para equipos con pipelines de CI/CD existentes, puedes automatizar las revisiones de Copilot en cada pull request usando GitHub Actions. Esto incluye publicar comentarios de revisión automáticamente y filtrar por problemas críticos.
+
+> 📖 **Aprende más**: Consulta [CI/CD Integration](../appendices/ci-cd-integration.md) para flujos completos de GitHub Actions, opciones de configuración y consejos de resolución de problemas.
+
+---
+
+# Práctica
+
+
+
+Pon el flujo de trabajo completo en práctica.
+
+---
+
+## ▶️ Inténtalo tú mismo
+
+Después de completar las demostraciones, prueba estas variaciones:
+
+1. **Reto de extremo a extremo**: Elige una pequeña función (por ejemplo, "listar libros no leídos" o "exportar a CSV"). Usa el flujo completo:
+ - Planifica con `/plan`
+ - Diseña con agents (python-reviewer, pytest-helper)
+ - Implementa
+ - Genera pruebas
+ - Crea PR
+
+2. **Reto de automatización**: Configura el hook de pre-commit del flujo de Automatización de revisión de código. Haz un commit con una vulnerabilidad intencional en la ruta de un archivo. ¿Se bloquea?
+
+3. **Tu flujo de trabajo de producción**: Diseña tu propio flujo para una tarea común que hagas. Escríbelo como una lista de verificación. ¿Qué partes podrían automatizarse con skills, agents o hooks?
+
+**Autoevaluación**: Has completado el curso cuando puedas explicarle a un colega cómo agents, skills y MCP funcionan juntos — y cuándo usar cada uno.
+
+---
+
+## 📝 Tarea
+
+### Desafío principal: Función de extremo a extremo
+
+Los ejemplos prácticos recorrieron la construcción de una función "listar libros no leídos". Ahora practica el flujo completo con otra función: **buscar libros por rango de años**:
+
+1. Inicia Copilot y reúne contexto: `@samples/book-app-project/books.py`
+2. Planea con `/plan Add a "search by year" command that lets users find books published between two years`
+3. Implementa un método `find_by_year_range(start_year, end_year)` en `BookCollection`
+4. Agrega una función `handle_search_year()` en `book_app.py` que solicite al usuario los años de inicio y fin
+5. Genera pruebas: `@samples/book-app-project/books.py @samples/book-app-project/tests/test_books.py Generate tests for find_by_year_range() including edge cases like invalid years, reversed range, and no results.`
+6. Revisa con `/review`
+7. Actualiza el README: `@samples/book-app-project/README.md Add documentation for the new "search by year" command.`
+8. Genera un mensaje de commit
+
+Documenta tu flujo de trabajo mientras avanzas.
+
+**Criterio de éxito**: Has completado la función desde la idea hasta el commit usando Copilot CLI, incluyendo planificación, implementación, pruebas, documentación y revisión.
+
+> 💡 **Bonus**: Si tienes agents configurados desde el Capítulo 04, intenta crear y usar agents personalizados. Por ejemplo, un agent de manejo de errores para la revisión de implementación y un agent redactor de docs para la actualización del README.
+
+
+💡 Pistas (haz clic para expandir)
+
+**Sigue el patrón del ejemplo ["Idea a PR fusionado"](#de-la-idea-a-un-pr-fusionado-en-una-sola-sesión)** en la parte superior de este capítulo. Los pasos clave son:
+
+1. Reúne contexto con `@samples/book-app-project/books.py`
+2. Planea con `/plan Add a "search by year" command`
+3. Implementa el método y el manejador del comando
+4. Genera pruebas con casos límite (entrada inválida, resultados vacíos, rango invertido)
+5. Revisa con `/review`
+6. Actualiza el README con `@samples/book-app-project/README.md`
+7. Genera mensaje de commit con `-p`
+
+**Casos límite para considerar:**
+- ¿Qué pasa si el usuario ingresa "2000" y "1990" (rango invertido)?
+- ¿Qué pasa si ningún libro coincide con el rango?
+- ¿Qué pasa si el usuario ingresa valores no numéricos?
+
+**La clave es practicar el flujo completo** desde idea → contexto → plan → implementar → testear → documentar → commit.
+
+
+
+---
+
+
+🔧 Errores Comunes (haz clic para expandir)
+
+| Error | Qué sucede | Solución |
+|---------|--------------|-----|
+| Saltar directamente a la implementación | Se pasan por alto problemas de diseño que son costosos de arreglar después | Usa `/plan` primero para pensar el enfoque |
+| Usar una sola herramienta cuando varias ayudarían | Resultados más lentos y menos exhaustivos | Combina: Agent para análisis → Skill para ejecución → MCP para integración |
+| No revisar antes de commitear | Problemas de seguridad o bugs se filtran | Siempre ejecuta `/review` o usa un [hook de pre-commit](#codeblock1) |
+| Olvidar compartir los flujos con el equipo | Cada persona reinventará la rueda | Documenta patrones en agents compartidos, skills e instrucciones |
+
+
+
+---
+
+# Resumen
+
+## 🔑 Puntos clave
+
+1. **Integración > Aislamiento**: Combina herramientas para un impacto máximo
+2. **Primero el contexto**: Siempre reúne el contexto requerido antes del análisis
+3. **Agents analizan, Skills ejecutan**: Usa la herramienta adecuada para la tarea
+4. **Automatiza la repetición**: Hooks y scripts multiplican tu efectividad
+5. **Documenta los flujos**: Los patrones compartibles benefician a todo el equipo
+
+> 📋 **Referencia rápida**: Consulta la [referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference) para una lista completa de comandos y atajos.
+
+---
+
+## 🎓 ¡Curso completado!
+
+¡Felicidades! Has aprendido:
+
+| Capítulo | Lo que aprendiste |
+|---------|-------------------|
+| 00 | Instalación de Copilot CLI y Inicio rápido |
+| 01 | Tres modos de interacción |
+| 02 | Gestión de contexto con la sintaxis @ |
+| 03 | Flujos de trabajo de desarrollo |
+| 04 | Agentes especializados |
+| 05 | Habilidades extensibles |
+| 06 | Conexiones externas con MCP |
+| 07 | Flujos de producción unificados |
+
+Ahora estás preparado para usar GitHub Copilot CLI como un verdadero multiplicador de fuerza en tu flujo de trabajo de desarrollo.
+
+## ➡️ ¿Qué sigue
+
+Tu aprendizaje no termina aquí:
+
+1. **Practica diariamente**: Usa Copilot CLI para trabajo real
+2. **Crea herramientas personalizadas**: Crea agentes y habilidades para tus necesidades específicas
+3. **Comparte conocimiento**: Ayuda a tu equipo a adoptar estos flujos de trabajo
+4. **Mantente actualizado**: Sigue las actualizaciones de GitHub Copilot para nuevas funciones
+
+### Recursos
+
+- [Documentación de GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli)
+- [Registro de servidores MCP](https://github.com/modelcontextprotocol/servers)
+- [Habilidades comunitarias](https://github.com/topics/copilot-skill)
+
+---
+
+**¡Buen trabajo! Ahora ve y construye algo increíble.**
+
+**[← Volver al Capítulo 06](../06-mcp-servers/README.md)** | **[Volver al inicio del curso →](../README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/AGENTS.md b/translations/es/AGENTS.md
new file mode 100644
index 00000000..b9c1b2e6
--- /dev/null
+++ b/translations/es/AGENTS.md
@@ -0,0 +1,46 @@
+# AGENTS.md
+
+Curso para principiantes que enseña GitHub Copilot CLI. Contenido educativo, no software.
+
+## Estructura
+
+| Path | Purpose |
+|------|---------|
+| `00-07/` | Capítulos: analogía → conceptos → práctico → tarea → siguiente |
+| `samples/book-app-project/` | **Muestra principal**: Python CLI book collection app used throughout all chapters |
+| `samples/book-app-project-cs/` | Versión en C# de la aplicación de colección de libros |
+| `samples/book-app-project-js/` | Versión en JavaScript de la aplicación de colección de libros |
+| `samples/book-app-buggy/` | **Bugs intencionales** para ejercicios de depuración (Cap. 03) |
+| `samples/agents/` | Ejemplos de plantillas de agentes (python-reviewer, pytest-helper, hello-world) |
+| `samples/skills/` | Ejemplos de plantillas de habilidades (code-checklist, pytest-gen, commit-message, hello-world) |
+| `samples/mcp-configs/` | Ejemplos de configuración de servidor MCP |
+| `samples/buggy-code/` | **Extra opcional**: código con bugs enfocado en seguridad (JS y Python) |
+| `samples/src/` | **Extra opcional**: Ejemplos heredados de JS/React de una versión anterior del curso |
+| `appendices/` | Material de referencia suplementario |
+
+## Hacer
+
+- Mantén las explicaciones aptas para principiantes; explica la jerga de IA/ML cuando se use
+- Asegúrate de que los ejemplos de bash estén listos para copiar y pegar
+- Tono: amigable, alentador, práctico
+- Usa las rutas `samples/book-app-project/` en todos los ejemplos principales
+- Usa el contexto de Python/pytest para los ejemplos de código
+
+## No
+
+- No arregles los bugs en `samples/book-app-buggy/` o `samples/buggy-code/` — son intencionales
+- No añadas capítulos sin actualizar la tabla del curso en README.md
+- No asumas que los lectores conocen la terminología de IA/ML
+
+## Construcción
+
+```bash
+npm install && npm run release
+```
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/CODE_OF_CONDUCT.md b/translations/es/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..61582b0f
--- /dev/null
+++ b/translations/es/CODE_OF_CONDUCT.md
@@ -0,0 +1,134 @@
+# Código de Conducta del Contributor Covenant
+
+## Nuestro Compromiso
+
+Nosotros, como miembros, colaboradores y líderes, nos comprometemos a hacer que la participación en nuestra
+comunidad sea una experiencia libre de acoso para todas las personas, independientemente de la edad, el tamaño del cuerpo,
+discapacidad visible o invisible, etnia, características sexuales, identidad
+de género y expresión, nivel de experiencia, educación, estatus socioeconómico,
+nacionalidad, apariencia personal, raza, religión, o identidad
+y orientación sexual.
+
+Nos comprometemos a actuar e interactuar de maneras que contribuyan a una comunidad abierta, acogedora,
+diversa, inclusiva y saludable.
+
+## Nuestros Estándares
+
+Ejemplos de comportamientos que contribuyen a un entorno positivo para nuestra
+comunidad incluyen:
+
+* Demostrar empatía y amabilidad hacia otras personas
+* Ser respetuoso con opiniones, puntos de vista y experiencias diferentes
+* Dar y aceptar con gracia críticas constructivas
+* Aceptar la responsabilidad y pedir disculpas a quienes se vieron afectados por nuestros errores,
+ y aprender de la experiencia
+* Centrarse en lo que es mejor no solo para nosotros como individuos, sino para la
+ comunidad en general
+
+Ejemplos de conducta inaceptable incluyen:
+
+* El uso de lenguaje o imágenes sexualizadas, y la atención sexual o
+ propuestas de carácter sexual de cualquier tipo
+* Trolleo, insultos o comentarios despectivos, y ataques personales o políticos
+* Acoso público o privado
+* Publicar información privada de otras personas, como una dirección física o de correo
+ electrónico, sin su permiso explícito
+* Otra conducta que razonablemente podría considerarse inapropiada en un
+ entorno profesional
+
+## Responsabilidades de aplicación
+
+Los líderes de la comunidad son responsables de clarificar y hacer cumplir nuestros estándares de
+comportamiento aceptable y tomarán medidas correctivas apropiadas y justas en
+respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo,
+o perjudicial.
+
+Los líderes de la comunidad tienen el derecho y la responsabilidad de eliminar, editar o rechazar
+comentarios, commits, código, ediciones de wiki, issues y otras contribuciones que no estén
+alineadas con este Código de Conducta, y comunicarán las razones de las decisiones de moderación
+cuando sea apropiado.
+
+## Alcance
+
+Este Código de Conducta se aplica en todos los espacios comunitarios y también cuando
+una persona representa oficialmente a la comunidad en espacios públicos.
+Ejemplos de representar a nuestra comunidad incluyen el uso de una dirección de correo
+electrónico oficial, publicar a través de una cuenta oficial en redes sociales o actuar como
+representante designado en un evento en línea o presencial.
+
+## Aplicación
+
+Los casos de comportamiento abusivo, de acoso o de otro tipo inaceptable pueden
+ser reportados a los líderes comunitarios responsables de la aplicación en
+GitHub.
+Todas las quejas serán revisadas e investigadas de manera pronta y justa.
+
+Todos los líderes comunitarios están obligados a respetar la privacidad y seguridad de la
+persona que reporta cualquier incidente.
+
+## Directrices de Aplicación
+
+Los líderes comunitarios seguirán estas Directrices de Impacto Comunitario al determinar
+las consecuencias de cualquier acción que consideren en violación de este Código de Conducta:
+
+### 1. Correction
+
+**Impacto en la comunidad**: Uso de lenguaje inapropiado u otro comportamiento considerado
+no profesional o no bienvenido en la comunidad.
+
+**Consecuencia**: Una advertencia privada y por escrito por parte de los líderes comunitarios, que proporcione
+claridad sobre la naturaleza de la violación y una explicación de por qué el
+comportamiento fue inapropiado. Se podrá solicitar una disculpa pública.
+
+### 2. Warning
+
+**Impacto en la comunidad**: Una violación cometida en un solo incidente o mediante una serie
+de acciones.
+
+**Consecuencia**: Una advertencia con consecuencias por la conducta continuada. No
+interacción con las personas involucradas, incluida la interacción no solicitada con
+quienes hacen cumplir el Código de Conducta, por un período de tiempo especificado. Esto
+incluye evitar interacciones en los espacios de la comunidad así como en canales externos
+como las redes sociales. Violar estos términos puede llevar a una prohibición temporal o
+permanente.
+
+### 3. Temporary Ban
+
+**Impacto en la comunidad**: Una violación grave de los estándares de la comunidad, incluyendo
+comportamiento inapropiado sostenido.
+
+**Consecuencia**: Una prohibición temporal de cualquier tipo de interacción o comunicación pública
+con la comunidad por un período de tiempo especificado. No se permite la interacción pública ni
+privada con las personas involucradas, incluida la interacción no solicitada
+con quienes hacen cumplir el Código de Conducta durante este período.
+Violar estos términos puede llevar a una prohibición permanente.
+
+### 4. Permanent Ban
+
+**Impacto en la comunidad**: Demostrar un patrón de violación de los estándares de la
+comunidad, incluyendo comportamiento inapropiado sostenido, acoso a un
+individuo, o agresión hacia o menosprecio de clases de individuos.
+
+**Consecuencia**: Una prohibición permanente de cualquier tipo de interacción pública dentro
+de la comunidad.
+
+## Atribución
+
+Este Código de Conducta está adaptado del [Contributor Covenant][homepage],
+versión 2.0, disponible en
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Las Directrices de Impacto Comunitario se inspiraron en la [escalera de aplicación del código de conducta de Mozilla](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+Para respuestas a preguntas comunes sobre este código de conducta, consulte las preguntas frecuentes en
+https://www.contributor-covenant.org/faq. Las traducciones están disponibles en
+https://www.contributor-covenant.org/translations.
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/CONTRIBUTING.md b/translations/es/CONTRIBUTING.md
new file mode 100644
index 00000000..7a8707b4
--- /dev/null
+++ b/translations/es/CONTRIBUTING.md
@@ -0,0 +1,17 @@
+## Contribuir
+
+[fork]: https://github.com/github/REPO/fork
+[pr]: https://github.com/github/REPO/compare
+
+¡Hola! Nos entusiasma que quieras contribuir a este proyecto. Tu ayuda es esencial para mantenerlo excelente.
+
+Las contribuciones a este proyecto se [publican](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) públicamente bajo la [licencia de código abierto del proyecto](../../LICENSE.txt).
+
+Ten en cuenta que este proyecto se publica con un [Código de Conducta para Contribuyentes](CODE_OF_CONDUCT.md). Al participar en este proyecto aceptas cumplir sus términos.
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/GLOSSARY.md b/translations/es/GLOSSARY.md
new file mode 100644
index 00000000..d282bbfc
--- /dev/null
+++ b/translations/es/GLOSSARY.md
@@ -0,0 +1,170 @@
+# Glosario
+
+Referencia rápida de términos técnicos utilizados a lo largo de este curso. No te preocupes por memorizarlos ahora - consúltalos según sea necesario.
+
+---
+
+## A
+
+### Agente
+
+Una personalidad de IA especializada con experiencia en un dominio (por ejemplo, frontend, seguridad). Definida en `.agent.md` files with YAML frontmatter containing at minimum a `description` field.
+
+### API
+
+Interfaz de Programación de Aplicaciones. Una forma para que los programas se comuniquen entre sí.
+
+---
+
+## C
+
+### CI/CD
+
+Integración continua/Despliegue continuo. Canalizaciones automatizadas de pruebas y despliegue.
+
+### CLI
+
+Interfaz de línea de comandos. Una forma basada en texto para interactuar con el software (¡como esta herramienta!).
+
+### Context Window
+
+La cantidad de texto que una IA puede considerar a la vez. Como un escritorio que solo puede contener cierta cantidad. Cuando añades archivos, historial de conversación y system prompts, todos ocupan espacio en esta ventana.
+
+### Context Manager
+
+Una construcción de Python que usa la sentencia `with` y que maneja automáticamente la configuración y la limpieza (como abrir y cerrar archivos). Example: `with open("file.txt") as f:` ensures the file is closed even if an error occurs.
+
+### Conventional Commit
+
+Un formato de mensaje de commit que sigue una estructura estandarizada: `type(scope): description`. Los tipos comunes incluyen `feat` (nueva funcionalidad), `fix` (corrección de errores), `docs` (documentación), `refactor`, y `test`. Example: `feat(auth): add password reset flow`.
+
+### Dataclass
+
+Un decorador de Python (`@dataclass`) que genera automáticamente `__init__`, `__repr__`, y otros métodos para clases que principalmente almacenan datos. Usado en la book app para definir la clase `Book` con campos como `title`, `author`, `year`, y `read`.
+
+---
+
+## F
+
+### Frontmatter
+
+Metadatos en la parte superior de un archivo Markdown encerrados entre delimitadores `---`. Usado en agent and skill files to define properties like `description` and `name` in YAML format.
+
+---
+
+## G
+
+### Glob Pattern
+
+Un patrón que usa comodines para coincidir con rutas de archivos (e.g., `*.py` matches all Python files, `*.js` matches all JavaScript files).
+
+---
+
+## J
+
+### JWT
+
+JSON Web Token. Una forma segura de transmitir información de autenticación entre sistemas.
+
+---
+
+## M
+
+### MCP
+
+Model Context Protocol. Un estándar para conectar asistentes de IA a fuentes de datos externas.
+
+---
+
+## N
+
+### npx
+
+Una herramienta de Node.js que ejecuta paquetes npm sin instalarlos globalmente. Usada en MCP server configurations to launch servers (e.g., `npx @modelcontextprotocol/server-filesystem`).
+
+---
+
+## O
+
+### OWASP
+
+Open Web Application Security Project. Una organización que publica buenas prácticas de seguridad y mantiene la lista "OWASP Top 10" de los riesgos de seguridad de aplicaciones web más críticos.
+
+---
+
+## P
+
+### PEP 8
+
+Python Enhancement Proposal 8. La guía de estilo oficial para el código Python, que cubre convenciones de nombres (snake_case para funciones, PascalCase para clases), indentación (4 espacios) y el formato del código. Seguir PEP 8 hace que el código Python sea coherente y legible.
+
+### Pre-commit Hook
+
+Un script que se ejecuta automáticamente antes de cada `git commit`. Puede usarse para ejecutar Copilot security reviews o comprobaciones de calidad de código antes de que el código se haga commit.
+
+### pytest
+
+Un marco de pruebas de Python popular, conocido por su sintaxis simple, fixtures potentes y un rico ecosistema de plugins. Usado en todo este curso para probar la book app. Las pruebas se ejecutan con `python -m pytest tests/`.
+
+### Programmatic Mode
+
+Ejecutar Copilot con la bandera `-p` para comandos únicos sin interacción.
+
+---
+
+## R
+
+### Rate Limiting
+
+Restricciones sobre cuántas solicitudes puedes hacer a una API en un periodo de tiempo. Copilot puede limitar temporalmente las respuestas si excedes la cuota de uso de tu plan.
+
+---
+
+## S
+
+### Session
+
+Una conversación con Copilot que mantiene contexto y puede reanudarse más tarde.
+
+### Skill
+
+Una carpeta con instrucciones que Copilot carga automáticamente cuando son relevantes para tu prompt. Definida en `SKILL.md` files with YAML frontmatter.
+
+### Slash Command
+
+Comandos que comienzan con `/` que controlan Copilot (e.g., `/help`, `/clear`, `/model`).
+
+---
+
+## T
+
+### Token
+
+Una unidad de texto que los modelos de IA procesan. Aproximadamente 4 caracteres o 0.75 palabras. Usado para medir tanto la entrada (tus prompts y contexto) como la salida (respuestas de la IA).
+
+### Type Hints
+
+Anotaciones de Python que indican los tipos esperados de los parámetros de funciones y de los valores de retorno (e.g., `def add_book(title: str, year: int) -> Book:`). No hacen cumplir los tipos en tiempo de ejecución pero ayudan con la claridad del código, el soporte de IDE y herramientas de análisis estático como mypy.
+
+---
+
+## W
+
+### WCAG
+
+Web Content Accessibility Guidelines. Normas publicadas por el W3C para hacer el contenido web accesible a personas con discapacidades. WCAG 2.1 AA es un objetivo de conformidad común.
+
+---
+
+## Y
+
+### YAML
+
+YAML Ain't Markup Language. Un formato de datos legible por humanos usado para configuración. En este curso, YAML aparece en agent and skill frontmatter (the `---` delimited block at the top of `.agent.md` and `SKILL.md` files).
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/README.md b/translations/es/README.md
new file mode 100644
index 00000000..9d7f88f1
--- /dev/null
+++ b/translations/es/README.md
@@ -0,0 +1,111 @@
+
+
+[](../../LICENSE)
+[](https://codespaces.new/github/copilot-cli-for-beginners?hide_repo_select=true&ref=main&quickstart=true)
+[](https://docs.github.com/en/copilot/how-tos/copilot-cli)
+[](https://aka.ms/foundry/discord)
+
+🎯 [Lo que aprenderás](#lo-que-aprenderás) ✅ [Requisitos](#requisitos) 🤖 [Familia Copilot](#entendiendo-la-familia-de-github-copilot) 📚 [Estructura del curso](#estructura-del-curso) 📋 [Referencia de comandos](#referencia-de-comandos-de-github-copilot-cli)
+
+# GitHub Copilot CLI para Principiantes
+
+> **✨ Aprende a potenciar tu flujo de trabajo de desarrollo con asistencia por línea de comandos impulsada por IA.**
+
+GitHub Copilot CLI lleva la asistencia de IA directamente a tu terminal. En lugar de cambiar a un navegador o editor de código, puedes hacer preguntas, generar aplicaciones completas, revisar código, generar pruebas y depurar problemas sin salir de tu línea de comandos.
+
+¡Piénsalo como tener un colega experto disponible 24/7 que puede leer tu código, explicar patrones confusos y ayudarte a trabajar más rápido!
+
+> 📘 **¿Prefieres una experiencia web?** Puedes seguir este curso aquí mismo en GitHub, o verlo en [Awesome Copilot](https://awesome-copilot.github.com/learning-hub/cli-for-beginners/) para una experiencia de navegación más tradicional.
+
+Este curso está diseñado para:
+
+- **Desarrolladores de software** que quieren usar IA desde la línea de comandos
+- **Usuarios de terminal** que prefieren flujos de trabajo controlados por teclado en lugar de integraciones con IDE
+- **Equipos que buscan estandarizar** prácticas de revisión de código y desarrollo asistido por IA
+
+## 🎯 Lo que aprenderás
+
+Este curso práctico te lleva de cero a productivo con GitHub Copilot CLI. Trabajarás con una única aplicación de colección de libros en Python a lo largo de todos los capítulos, mejorándola progresivamente usando flujos de trabajo asistidos por IA. Al final, usarás IA con confianza para revisar código, generar pruebas, depurar problemas y automatizar flujos de trabajo: todo desde tu terminal.
+
+**No se requiere experiencia en IA.** Si sabes usar un terminal, puedes aprender esto.
+
+**Perfecto para:** Desarrolladores, estudiantes y cualquier persona con experiencia en desarrollo de software.
+
+## ✅ Requisitos
+
+Antes de comenzar, asegúrate de tener:
+
+- **Cuenta de GitHub**: [Crea una gratis](https://github.com/signup)
+- **Acceso a GitHub Copilot**: [Oferta gratuita](https://github.com/features/copilot/plans), [Suscripción mensual](https://github.com/features/copilot/plans), o [Gratis para estudiantes/docentes](https://education.github.com/pack)
+- **Conceptos básicos del terminal**: Cómodo con `cd`, `ls`, ejecutar comandos
+
+## 🤖 Entendiendo la familia de GitHub Copilot
+
+GitHub Copilot ha evolucionado hacia una familia de herramientas potenciadas por IA. Aquí es donde vive cada una:
+
+| Producto | Dónde se ejecuta | Descripción |
+|---------|---------------|----------|
+| [**GitHub Copilot CLI**](https://docs.github.com/copilot/how-tos/copilot-cli/cli-getting-started)
(este curso) | Tu terminal | Asistente de codificación con IA nativo del terminal |
+| [**GitHub Copilot**](https://docs.github.com/copilot) | VS Code, Visual Studio, JetBrains, etc. | Modo agente, chat, sugerencias en línea |
+| [**Copilot on GitHub.com**](https://github.com/copilot) | GitHub | Chat inmersivo sobre tus repositorios, crea agentes y más |
+| [**GitHub Copilot cloud agent**](https://docs.github.com/copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks) | GitHub | Asignar issues a agentes, recibir PRs de vuelta |
+
+Este curso se centra en **GitHub Copilot CLI**, llevando la asistencia de IA directamente a tu terminal.
+
+## 📚 Estructura del curso
+
+
+
+| Capítulo | Título | Qué construirás |
+|:-------:|-------|-------------------|
+| 00 | 🚀 [Inicio rápido](./00-quick-start/README.md) | Instalación y verificación |
+| 01 | 👋 [Primeros pasos](./01-setup-and-first-steps/README.md) | Demos en vivo + tres modos de interacción |
+| 02 | 🔍 [Contexto y conversaciones](./02-context-conversations/README.md) | Análisis de proyectos con múltiples archivos |
+| 03 | ⚡ [Flujos de trabajo de desarrollo](./03-development-workflows/README.md) | Revisión de código, depuración, generación de pruebas |
+| 04 | 🤖 [Crear asistentes de IA especializados](./04-agents-custom-instructions/README.md) | Agentes personalizados para tu flujo de trabajo |
+| 05 | 🛠️ [Automatizar tareas repetitivas](./05-skills/README.md) | Habilidades que se cargan automáticamente |
+| 06 | 🔌 [Conectar con GitHub, bases de datos y APIs](./06-mcp-servers/README.md) | Integración de servidor MCP |
+| 07 | 🎯 [Poniéndolo todo junto](./07-putting-it-together/README.md) | Flujos de trabajo completos |
+
+## 📖 Cómo funciona este curso
+
+Cada capítulo sigue el mismo patrón:
+
+1. **Analogía del mundo real**: Entiende el concepto a través de comparaciones familiares
+2. **Conceptos clave**: Aprende el conocimiento esencial
+3. **Ejemplos prácticos**: Ejecuta comandos reales y ve resultados
+4. **Asignación**: Practica lo que aprendiste
+5. **Qué sigue**: Vista previa del siguiente capítulo
+
+**Los ejemplos de código se pueden ejecutar.** Cada bloque de texto de copilot en este curso puede copiarse y ejecutarse en tu terminal.
+
+## 📋 Referencia de comandos de GitHub Copilot CLI
+
+La **[referencia de comandos de GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/cli-command-reference)** te ayuda a encontrar comandos y atajos de teclado para usar Copilot CLI de manera efectiva.
+
+## 🙋 Obtener ayuda
+
+- 🐛 **¿Encontraste un error?** [Abre un Issue](https://github.com/github/copilot-cli-for-beginners/issues)
+- 📚 **Documentación oficial:** [Documentación de GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli)
+
+## Contribuir
+
+> **Nota**: El código utilizado en el curso está diseñado para generar tipos específicos de salida durante revisiones, explicaciones y depuración, por lo que no podemos aceptar PRs que cambien el código existente.
+
+**Cómo contribuir:**
+
+1. Haz un fork de este repositorio y clónalo en tu máquina
+2. Crea una rama de características (`git checkout -b my-improvement`)
+3. Haz tus cambios
+4. Envía un pull request
+
+## Licencia
+
+Este proyecto está licenciado bajo los términos de la licencia de código abierto MIT. Consulta el archivo [LICENSE](../../LICENSE) para ver los términos completos.
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/SECURITY.md b/translations/es/SECURITY.md
new file mode 100644
index 00000000..e110a0ac
--- /dev/null
+++ b/translations/es/SECURITY.md
@@ -0,0 +1,38 @@
+Gracias por ayudar a que GitHub sea seguro para todos.
+
+# Seguridad
+
+GitHub se toma en serio la seguridad de nuestros productos y servicios de software, incluidos todos los repositorios de código abierto gestionados a través de nuestras organizaciones de GitHub, como [GitHub](https://github.com/GitHub).
+
+Aunque [los repositorios de código abierto están fuera del alcance de nuestro programa de recompensas por errores](https://bounty.github.com/index.html#scope) y, por lo tanto, no son elegibles para recompensas, nos aseguraremos de que su hallazgo se transmita a los mantenedores correspondientes para su corrección.
+
+## Informar problemas de seguridad
+
+Si cree que ha encontrado una vulnerabilidad de seguridad en algún repositorio propiedad de GitHub, infórmenos mediante divulgación coordinada.
+
+**Por favor, no informe vulnerabilidades de seguridad a través de issues públicos de GitHub, discussions o pull requests.**
+
+En su lugar, envíe un correo electrónico a opensource-security[@]github.com.
+
+Incluya tanta información de la siguiente lista como pueda para ayudarnos a comprender y resolver mejor el problema:
+
+ * El tipo de problema (por ejemplo, desbordamiento de búfer, inyección SQL o cross-site scripting)
+ * Rutas completas de los archivos fuente relacionados con la manifestación del problema
+ * La ubicación del código fuente afectado (tag/branch/commit o URL directa)
+ * Cualquier configuración especial necesaria para reproducir el problema
+ * Instrucciones paso a paso para reproducir el problema
+ * Código de prueba de concepto o exploit (si es posible)
+ * Impacto del problema, incluyendo cómo un atacante podría explotarlo
+
+Esta información nos ayudará a clasificar su informe más rápidamente.
+
+## Política
+
+Consulte la [Política de Puerto Seguro de GitHub](https://docs.github.com/en/site-policy/security-policies/github-bug-bounty-program-legal-safe-harbor#1-safe-harbor-terms)
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/SUPPORT.md b/translations/es/SUPPORT.md
new file mode 100644
index 00000000..e9cb7b63
--- /dev/null
+++ b/translations/es/SUPPORT.md
@@ -0,0 +1,18 @@
+# Soporte
+
+## Cómo presentar incidencias y obtener ayuda
+
+Este proyecto utiliza las incidencias de GitHub para rastrear errores y solicitudes de funciones. Por favor, busque las incidencias existentes antes de presentar nuevas para evitar duplicados. Para nuevas incidencias, presente su informe de error o solicitud de función como una nueva incidencia.
+
+Para obtener ayuda o hacer preguntas sobre el uso de este proyecto, por favor presente una incidencia.
+
+## Política de soporte de GitHub
+
+El soporte para este proyecto se limita a los recursos listados arriba.
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/appendices/README.md b/translations/es/appendices/README.md
new file mode 100644
index 00000000..7cb57bcd
--- /dev/null
+++ b/translations/es/appendices/README.md
@@ -0,0 +1,19 @@
+# Apéndices
+
+Estos apéndices cubren temas adicionales que amplían el contenido principal del curso. Son lecturas opcionales para cuando necesites estas capacidades específicas.
+
+| Apéndice | Descripción | Prerrequisito |
+|----------|-------------|--------------|
+| [Características adicionales de contexto](additional-context.md) | Trabajar con imágenes y permisos en múltiples directorios | Capítulo 02 |
+| [Integración CI/CD](ci-cd-integration.md) | Flujos de trabajo de GitHub Actions para revisiones automatizadas | Capítulo 07 |
+
+---
+
+**[← Volver al inicio del curso](../README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/appendices/additional-context.md b/translations/es/appendices/additional-context.md
new file mode 100644
index 00000000..acfe9cb0
--- /dev/null
+++ b/translations/es/appendices/additional-context.md
@@ -0,0 +1,147 @@
+# Funciones adicionales de contexto
+
+> 📖 **Requisito previo**: Completa [Capítulo 02: Context and Conversations](../02-context-conversations/README.md) antes de leer este apéndice.
+
+Este apéndice cubre dos funciones adicionales de contexto: trabajar con imágenes y gestionar permisos en múltiples directorios.
+
+---
+
+## Trabajar con imágenes
+
+Puedes incluir imágenes en tus conversaciones usando la sintaxis `@`. Copilot puede analizar capturas de pantalla, maquetas, diagramas y otro contenido visual.
+
+### Referencia básica de imágenes
+
+```bash
+copilot
+
+> @screenshot.png What's happening in this UI?
+
+# Copilot analiza la imagen y responde
+
+> @mockup.png @current-design.png Compare these two designs
+
+# También puedes arrastrar y soltar imágenes o pegar desde el portapapeles
+```
+
+### Formatos de imagen compatibles
+
+| Format | Best For |
+|--------|----------|
+| PNG | Capturas de pantalla, maquetas de UI, diagramas |
+| JPG/JPEG | Fotos, imágenes complejas |
+| GIF | Diagramas simples (solo primer fotograma) |
+| WebP | Capturas de pantalla web |
+
+### Casos prácticos de uso de imágenes
+
+**1. UI Debugging**
+```bash
+> @bug-screenshot.png The button doesn't align properly. What CSS might cause this?
+```
+
+**2. Design Implementation**
+```bash
+> @figma-export.png Write the HTML and Tailwind CSS to match this design
+```
+
+**3. Error Analysis**
+```bash
+> @error-screenshot.png What does this error mean and how do I fix it?
+```
+
+**4. Architecture Review**
+```bash
+> @whiteboard-diagram.png Convert this architecture diagram to a Mermaid diagram I can put in docs
+```
+
+**5. Before/After Comparison**
+```bash
+> @before.png @after.png What changed between these two versions of the UI?
+```
+
+### Combinar imágenes con código
+
+Las imágenes son aún más poderosas cuando se combinan con el contexto de código:
+
+```bash
+copilot
+
+> @screenshot-of-bug.png @src/components/Header.jsx
+> The header looks wrong in the screenshot. What's causing it in the code?
+```
+
+### Consejos sobre imágenes
+
+- **Recorta las capturas de pantalla** para mostrar solo las porciones relevantes (ahorra tokens de contexto)
+- **Usa alto contraste** para los elementos de UI que quieras analizar
+- **Anota si es necesario** - rodea o resalta las áreas problemáticas antes de subir
+- **Una imagen por concepto** - varias imágenes funcionan, pero sé conciso
+
+---
+
+## Patrones de permisos
+
+Por defecto, Copilot puede acceder a archivos en tu directorio actual. Para archivos en otros lugares, necesitas conceder acceso.
+
+### Agregar directorios
+
+```bash
+# Agregar un directorio a la lista permitida
+copilot --add-dir /path/to/other/project
+
+# Agregar múltiples directorios
+copilot --add-dir ~/workspace --add-dir /tmp
+```
+
+### Permitir todas las rutas
+
+```bash
+# Desactivar por completo las restricciones de ruta (usar con precaución)
+copilot --allow-all-paths
+```
+
+### Dentro de una sesión
+
+```bash
+copilot
+
+> /add-dir /path/to/other/project
+# Ahora puedes referenciar archivos desde ese directorio
+
+> /list-dirs
+# Ver todos los directorios permitidos
+
+> /yolo
+# Alias rápido para /allow-all activado — aprueba automáticamente todas las solicitudes de permiso
+```
+
+### Para automatización
+
+```bash
+# Permitir todos los permisos para scripts no interactivos
+copilot -p "Review @src/" --allow-all
+
+# O utiliza el alias memorable
+copilot -p "Review @src/" --yolo
+```
+
+### Cuando necesitas acceso a múltiples directorios
+
+Escenarios comunes en los que necesitarás estos permisos:
+
+1. **Monorepo work** - Comparar código entre paquetes
+2. **Cross-project refactoring** - Actualizar bibliotecas compartidas
+3. **Documentation projects** - Referenciar múltiples bases de código
+4. **Migration work** - Comparar implementaciones antiguas y nuevas
+
+---
+
+**[← Volver al Capítulo 02](../02-context-conversations/README.md)** | **[Volver a los apéndices](README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/appendices/ci-cd-integration.md b/translations/es/appendices/ci-cd-integration.md
new file mode 100644
index 00000000..5fe53ac4
--- /dev/null
+++ b/translations/es/appendices/ci-cd-integration.md
@@ -0,0 +1,206 @@
+# Integración CI/CD
+
+> 📖 **Prerequisito**: Complete [Capítulo 07: Integrándolo todo](../07-putting-it-together/README.md) antes de leer este apéndice.
+>
+> ⚠️ **Este apéndice es para equipos con pipelines de CI/CD existentes.** Si eres nuevo en GitHub Actions o en conceptos de CI/CD, comienza con el enfoque más sencillo del hook pre-commit en la sección [Automatización de revisión de código](../07-putting-it-together/README.md#workflow-3-code-review-automation-optional) del Capítulo 07.
+
+Este apéndice muestra cómo integrar GitHub Copilot CLI en tus pipelines de CI/CD para la revisión automática de código en pull requests.
+
+---
+
+## Flujo de trabajo de GitHub Actions
+
+Este flujo de trabajo revisa automáticamente los archivos cambiados cuando se abre o actualiza un pull request:
+
+```yaml
+# .github/workflows/copilot-review.yml
+name: Copilot Review
+
+on:
+ pull_request:
+ types: [opened, synchronize]
+
+jobs:
+ review:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Needed to compare with main branch
+
+ - name: Install Copilot CLI
+ run: npm install -g @github/copilot
+
+ - name: Review Changed Files
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ # Get list of changed JS/TS files
+ FILES=$(git diff --name-only origin/main...HEAD | grep -E '\.(js|ts|jsx|tsx)$' || true)
+
+ if [ -z "$FILES" ]; then
+ echo "No JavaScript/TypeScript files changed"
+ exit 0
+ fi
+
+ echo "# Copilot Code Review" > review.md
+ echo "" >> review.md
+
+ for file in $FILES; do
+ echo "Reviewing $file..."
+ echo "## $file" >> review.md
+ echo "" >> review.md
+
+ # Use --silent to suppress progress output
+ copilot --allow-all -p "Quick security and quality review of @$file. List only critical issues." --silent >> review.md 2>/dev/null || echo "Review skipped" >> review.md
+ echo "" >> review.md
+ done
+
+ - name: Post Review Comment
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const fs = require('fs');
+ const review = fs.readFileSync('review.md', 'utf8');
+
+ // Only post if there's meaningful content
+ if (review.includes('CRITICAL') || review.includes('HIGH')) {
+ github.rest.issues.createComment({
+ issue_number: context.issue.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ body: review
+ });
+ } else {
+ console.log('No critical issues found, skipping comment');
+ }
+```
+
+---
+
+## Opciones de configuración
+
+### Limitando el alcance de la revisión
+
+Puedes centrar la revisión en tipos específicos de problemas:
+
+```yaml
+# Security-only review
+copilot --allow-all -p "Security review of @$file. Check for: SQL injection, XSS, hardcoded secrets, authentication issues." --silent
+
+# Performance-only review
+copilot --allow-all -p "Performance review of @$file. Check for: N+1 queries, memory leaks, blocking operations." --silent
+```
+
+### Manejo de PRs grandes
+
+Para PRs con muchos archivos, considere agrupar o limitar:
+
+```yaml
+# Limit to first 10 files
+FILES=$(git diff --name-only origin/main...HEAD | grep -E '\.(js|ts)$' | head -10)
+
+# Or set a timeout per file
+timeout 60 copilot --allow-all -p "Review @$file" --silent || echo "Review timed out"
+```
+
+### Configuración del equipo
+
+Para revisiones consistentes en todo el equipo, cree una configuración compartida:
+
+```json
+// .copilot/config.json (committed to repo)
+{
+ "model": "claude-sonnet-4.5",
+ "permissions": {
+ "allowedPaths": ["src/**/*", "tests/**/*"],
+ "deniedPaths": [".env*", "secrets/**/*", "*.min.js"]
+ }
+}
+```
+
+---
+
+## Alternativa: Bot de revisión de PR
+
+Para flujos de trabajo de revisión más sofisticados, considere usar el agente en la nube de GitHub Copilot:
+
+```yaml
+# .github/workflows/copilot-agent-review.yml
+name: Request Copilot Review
+
+on:
+ pull_request:
+ types: [opened, ready_for_review]
+
+jobs:
+ request-review:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Request Copilot Review
+ uses: actions/github-script@v7
+ with:
+ script: |
+ await github.rest.pulls.requestReviewers({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ pull_number: context.issue.number,
+ reviewers: ['copilot[bot]']
+ });
+```
+
+---
+
+## Mejores prácticas para la integración CI/CD
+
+1. **Usar la opción `--silent`** - Suprime la salida de progreso para registros más limpios
+2. **Establecer tiempos de espera** - Evitar que las revisiones atascadas bloqueen tu pipeline
+3. **Filtrar tipos de archivo** - Revisar solo archivos relevantes (omitir código generado, dependencias)
+4. **Atención a límites de tasa** - Espaciar las revisiones para PRs grandes
+5. **Fallar de forma elegante** - No bloquear fusiones por fallos en la revisión; registrar y continuar
+
+---
+
+## Solución de problemas
+
+### "Autenticación fallida" en CI
+
+Asegúrese de que su flujo de trabajo tenga los permisos correctos:
+
+```yaml
+permissions:
+ contents: read
+ pull-requests: write
+ issues: write
+```
+
+### Revisiones que exceden el tiempo de espera
+
+Aumente el tiempo de espera o reduzca el alcance:
+
+```bash
+timeout 120 copilot --allow-all -p "Quick review of @$file - critical issues only" --silent
+```
+
+### Límites de tokens en archivos grandes
+
+Omitir archivos muy grandes:
+
+```bash
+if [ $(wc -l < "$file") -lt 500 ]; then
+ copilot --allow-all -p "Review @$file" --silent
+else
+ echo "Skipping $file (too large)"
+fi
+```
+
+---
+
+**[← Volver al Capítulo 07](../07-putting-it-together/README.md)** | **[Volver a los apéndices](README.md)**
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/agents/README.md b/translations/es/samples/agents/README.md
new file mode 100644
index 00000000..987ebee1
--- /dev/null
+++ b/translations/es/samples/agents/README.md
@@ -0,0 +1,113 @@
+# Definiciones de agentes de ejemplo
+
+Esta carpeta contiene algunas plantillas de agentes sencillas para GitHub Copilot CLI destinadas a ayudarte a empezar a usar agentes.
+
+## Inicio rápido
+
+```bash
+# Copia un agente a tu carpeta personal de agentes
+cp hello-world.agent.md ~/.copilot/agents/
+
+# O cópialo en tu proyecto para compartirlo con el equipo
+cp python-reviewer.agent.md .github/agents/
+```
+
+## Archivos de ejemplo en esta carpeta
+
+| Archivo | Descripción | Ideal para |
+|------|-------------|----------|
+| `hello-world.agent.md` | Ejemplo mínimo (11 líneas) | Aprender el formato |
+| `python-reviewer.agent.md` | Revisor de calidad de código Python | Revisiones de código, PEP 8, anotaciones de tipos |
+| `pytest-helper.agent.md` | Especialista en pruebas con Pytest | Generación de pruebas, fixtures, casos límite |
+
+## Encontrar más agentes
+
+- **[github/awesome-copilot](https://github.com/github/awesome-copilot)** - Recursos oficiales de GitHub con agentes de la comunidad e instrucciones
+
+---
+
+## Formato de archivo del agente
+
+Cada archivo de agente requiere un frontmatter YAML con al menos un campo `description`:
+
+```markdown
+---
+name: my-agent
+description: Brief description of what this agent does
+tools: ["read", "edit", "search"] # Optional: limit available tools
+---
+
+# Agent Name
+
+Agent instructions go here...
+```
+
+**Propiedades YAML disponibles:**
+
+| Propiedad | Requerido | Descripción |
+|----------|----------|-------------|
+| `description` | **Sí** | Qué hace el agente |
+| `name` | No | Nombre para mostrar (por defecto usa el nombre del archivo) |
+| `tools` | No | Lista de herramientas permitidas (omitido = todas). Ver alias más abajo. |
+| `target` | No | Limitar a `vscode` o `github-copilot` únicamente |
+
+**Alias de herramientas**: `read`, `edit`, `search`, `execute` (shell), `web`, `agent`
+
+> 💡 **Nota**: La propiedad `model` funciona en VS Code pero aún no es compatible con Copilot CLI.
+>
+> 📖 **Documentación oficial**: [Configuración de agentes personalizados](https://docs.github.com/copilot/reference/custom-agents-configuration)
+
+## Ubicaciones de archivos de agentes
+
+Los agentes pueden almacenarse en:
+- `~/.copilot/agents/` - Agentes globales disponibles en todos los proyectos
+- `.github/agents/` - Agentes específicos del proyecto
+- `.agent.md` files - Formato compatible con VS Code
+
+Cada agente es un archivo separado con la extensión `.agent.md`.
+
+---
+
+## Ejemplos de uso
+
+```bash
+# Comienza con un agente específico
+copilot --agent python-reviewer
+
+# O selecciona un agente de forma interactiva durante una sesión
+copilot
+> /agent
+# Selecciona "python-reviewer" de la lista
+
+# La experiencia del agente se aplica a tus indicaciones
+> @samples/book-app-project/books.py Review this code for quality issues
+
+# Cambia a un agente diferente
+> /agent
+# Selecciona "pytest-helper"
+
+> @samples/book-app-project/tests/test_books.py What additional tests should we add?
+```
+
+---
+
+## Crear tus propios agentes
+
+1. Crea un nuevo archivo en `~/.copilot/agents/` con la extensión `.agent.md`
+2. Agrega un frontmatter YAML con al menos un campo `description`
+3. Añade un encabezado descriptivo (p. ej., `# Security Agent`)
+4. Define la experiencia, estándares y comportamientos del agente
+5. Usa el agente con `/agent` o `--agent `
+
+**Consejos para agentes eficaces:**
+- Sé específico respecto a las áreas de especialización
+- Incluye estándares y patrones de código
+- Define qué verifica el agente
+- Incluye las preferencias de formato de salida
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/agents/hello-world.agent.md b/translations/es/samples/agents/hello-world.agent.md
new file mode 100644
index 00000000..d0af0139
--- /dev/null
+++ b/translations/es/samples/agents/hello-world.agent.md
@@ -0,0 +1,19 @@
+---
+name: hello-world
+description: Un ejemplo de agente mínimo - responde con mensajes amistosos y alentadores
+---
+# Agente Hola Mundo
+
+Eres un asistente amigable que responde con mensajes alentadores.
+
+Cuando el usuario pida ayuda, siempre:
+- Comienza con un saludo positivo
+- Mantén las respuestas breves y útiles
+- Termina con una nota alentadora
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/agents/pytest-helper.agent.md b/translations/es/samples/agents/pytest-helper.agent.md
new file mode 100644
index 00000000..5e2b074d
--- /dev/null
+++ b/translations/es/samples/agents/pytest-helper.agent.md
@@ -0,0 +1,33 @@
+---
+name: pytest-helper
+tools:
+- read
+- edit
+- search
+- execute
+---
+# Especialista en pruebas con Pytest
+
+Eres un experto en pruebas enfocado en las mejores prácticas de pytest.
+
+## Tu experiencia
+
+- pytest fixtures y decoradores parametrize
+- Mocking con monkeypatch y unittest.mock
+- Organización de pruebas (arrange/act/assert)
+- Identificación de casos límite
+
+## Estándares de pruebas
+
+- Probar comportamiento, no implementación
+- Usar nombres de test descriptivos: test___
+- Una aserción por test cuando sea posible
+- Usar fixtures para configuración compartida
+- Siempre probar: camino feliz, casos límite, casos de error
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/agents/python-reviewer.agent.md b/translations/es/samples/agents/python-reviewer.agent.md
new file mode 100644
index 00000000..c262d118
--- /dev/null
+++ b/translations/es/samples/agents/python-reviewer.agent.md
@@ -0,0 +1,42 @@
+---
+name: python-reviewer
+tools:
+- read
+- edit
+- search
+description: Especialista en calidad del código Python para revisar proyectos en Python
+---
+# Revisor de código Python
+
+Eres un especialista en Python enfocado en la calidad del código y las mejores prácticas.
+
+## Tu experiencia
+
+- Características de Python 3.10+ (dataclasses, type hints, match statements)
+- Cumplimiento del estilo PEP 8
+- Patrones de manejo de errores (try/except, excepciones personalizadas)
+- Mejores prácticas en E/S de archivos y manejo de JSON
+
+## Estándares de código
+
+Al revisar, comprueba siempre:
+- Anotaciones de tipo faltantes en las firmas de las funciones
+- Cláusulas except sin especificar (deben capturar excepciones específicas)
+- Argumentos por defecto mutables
+- Uso adecuado de gestores de contexto (with statements)
+- Completitud de la validación de entrada
+
+## Al revisar código
+
+Prioriza:
+- [CRITICAL] Problemas de seguridad y riesgos de corrupción de datos
+- [HIGH] Falta de manejo de errores
+- [MEDIUM] Problemas de estilo y anotaciones de tipo
+- [LOW] Mejoras menores
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/book-app-buggy/README.md b/translations/es/samples/book-app-buggy/README.md
new file mode 100644
index 00000000..e3a6d1be
--- /dev/null
+++ b/translations/es/samples/book-app-buggy/README.md
@@ -0,0 +1,49 @@
+# Aplicación de Libros - Versión con Errores
+
+Este directorio contiene una versión intencionalmente con errores de la aplicación de colección de libros para ejercicios de depuración en el Capítulo 03.
+
+**NO arregles estos errores directamente.** Existen para que los alumnos puedan practicar usando GitHub Copilot CLI para identificar y depurar problemas.
+
+---
+
+## Errores intencionales
+
+### books_buggy.py
+
+| # | Error | Síntoma |
+|---|-----|---------|
+| 1 | `find_book_by_title()` uses exact case match | Searching for "the hobbit" returns nothing even though "The Hobbit" exists |
+| 2 | `save_books()` doesn't use context manager | File handle leak; no error handling for permission issues |
+| 3 | `add_book()` has no year validation | Accepts negative years, year 0, and years far in the future |
+| 4 | `remove_book()` uses `in` substring check | Removing "Dune" also matches and removes "Dune Messiah" |
+| 5 | `mark_as_read()` marks ALL books as read | Loop variable bug - iterates all books instead of just the match |
+| 6 | `find_by_author()` requires exact match | "Tolkien" won't find "J.R.R. Tolkien" (no partial matching) |
+
+### book_app_buggy.py
+
+| # | Error | Síntoma |
+|---|-----|---------|
+| 7 | `show_books()` numbering starts at 0 | Books display as "0. ...", "1. ..." instead of "1. ...", "2. ..." |
+| 8 | `handle_add()` accepts empty title/author | Can add books with blank titles and authors |
+| 9 | `handle_remove()` always prints success | Says "Book removed" even when the book wasn't found |
+
+---
+
+## Cómo usar en el Capítulo 03
+
+```bash
+copilot
+
+> @samples/book-app-buggy/books_buggy.py Users report that searching for
+> "The Hobbit" returns no results even though it's in the data. Debug why.
+
+> @samples/book-app-buggy/book_app_buggy.py When I remove a book that
+> doesn't exist, the app says it was removed. Help me find why.
+```
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/book-app-project-cs/README.md b/translations/es/samples/book-app-project-cs/README.md
new file mode 100644
index 00000000..231a9e78
--- /dev/null
+++ b/translations/es/samples/book-app-project-cs/README.md
@@ -0,0 +1,58 @@
+# Aplicación de colección de libros
+
+*(Este README está intencionalmente crudo para que puedas mejorarlo con GitHub Copilot CLI)*
+
+Una aplicación de consola en C# para gestionar libros que tienes o quieres leer.
+Puede agregar, eliminar y listar libros. También marcarlos como leídos.
+
+---
+
+## Características actuales
+
+* Lee libros desde un archivo JSON (nuestra base de datos)
+* La validación de entrada es débil en algunas áreas
+* Existen algunas pruebas pero probablemente no sean suficientes
+
+---
+
+## Archivos
+
+* `Program.cs` - Punto de entrada principal de la CLI
+* `Models/Book.cs` - Clase modelo Book
+* `Services/BookCollection.cs` - Clase BookCollection con la lógica de datos
+* `data.json` - Datos de libros de ejemplo
+* `Tests/BookCollectionTests.cs` - Pruebas xUnit
+
+---
+
+## Ejecutar la aplicación
+
+```bash
+dotnet run -- list
+dotnet run -- add
+dotnet run -- find
+dotnet run -- remove
+dotnet run -- help
+```
+
+## Ejecutar pruebas
+
+```bash
+cd Tests
+dotnet test
+```
+
+---
+
+## Notas
+
+* No apto para producción (obviamente)
+* Parte del código podría mejorarse
+* Se podrían añadir más comandos más adelante
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/book-app-project-js/README.md b/translations/es/samples/book-app-project-js/README.md
new file mode 100644
index 00000000..1c04f574
--- /dev/null
+++ b/translations/es/samples/book-app-project-js/README.md
@@ -0,0 +1,57 @@
+# Aplicación de colección de libros
+
+*(Este README es intencionalmente rudimentario para que puedas mejorarlo con GitHub Copilot CLI)*
+
+Una aplicación en JavaScript para gestionar libros que tienes o quieres leer.
+Puede agregar, eliminar y listar libros. También puede marcarlos como leídos.
+
+---
+
+## Características actuales
+
+* Lee libros desde un archivo JSON (nuestra base de datos)
+* La validación de entrada es débil en algunas áreas
+* Existen algunas pruebas pero probablemente no sean suficientes
+
+---
+
+## Archivos
+
+* `book_app.js` - Punto de entrada principal de la CLI
+* `books.js` - Clase BookCollection con la lógica de datos
+* `utils.js` - Funciones auxiliares para la interfaz de usuario y la entrada
+* `data.json` - Datos de ejemplo de libros
+* `tests/test_books.js` - Pruebas iniciales usando el ejecutor de pruebas incorporado de Node
+
+---
+
+## Ejecutar la aplicación
+
+```bash
+node book_app.js list
+node book_app.js add
+node book_app.js find
+node book_app.js remove
+node book_app.js help
+```
+
+## Ejecutar las pruebas
+
+```bash
+npm test
+```
+
+---
+
+## Notas
+
+* No está listo para producción (obviamente)
+* Parte del código podría mejorarse
+* Se podrían agregar más comandos más adelante
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/book-app-project/README.md b/translations/es/samples/book-app-project/README.md
new file mode 100644
index 00000000..1d27e2d1
--- /dev/null
+++ b/translations/es/samples/book-app-project/README.md
@@ -0,0 +1,57 @@
+# Aplicación de colección de libros
+
+*(Este README es intencionadamente tosco para que puedas mejorarlo con GitHub Copilot CLI)*
+
+Una aplicación en Python para gestionar libros que tienes o quieres leer.
+Puede añadir, eliminar y listar libros. También marcarlos como leídos.
+
+---
+
+## Funcionalidades actuales
+
+* Lee libros desde un archivo JSON (nuestra base de datos)
+* La validación de entradas es débil en algunas áreas
+* Existen algunas pruebas pero probablemente no sean suficientes
+
+---
+
+## Archivos
+
+* `book_app.py` - Punto de entrada principal del CLI
+* `books.py` - Clase BookCollection con la lógica de datos
+* `utils.py` - Funciones auxiliares para la interfaz de usuario y la entrada
+* `data.json` - Datos de ejemplo de libros
+* `tests/test_books.py` - Pruebas iniciales con pytest
+
+---
+
+## Ejecutar la aplicación
+
+```bash
+python book_app.py list
+python book_app.py add
+python book_app.py find
+python book_app.py remove
+python book_app.py help
+```
+
+## Ejecutar pruebas
+
+```bash
+python -m pytest tests/
+```
+
+---
+
+## Notas
+
+* No apto para producción (obviamente)
+* Algunas partes del código podrían mejorarse
+* Se podrían añadir más comandos más adelante
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/buggy-code/README.md b/translations/es/samples/buggy-code/README.md
new file mode 100644
index 00000000..b50721fe
--- /dev/null
+++ b/translations/es/samples/buggy-code/README.md
@@ -0,0 +1,81 @@
+# Ejemplos de Código con Errores
+
+This folder contains intentionally buggy code for practicing code review and debugging with GitHub Copilot CLI.
+
+## Estructura de la carpeta
+
+```
+buggy-code/
+├── js/ # JavaScript examples
+│ ├── userService.js # User management with 8 bugs
+│ └── paymentProcessor.js # Payment handling with 8 bugs
+└── python/ # Python examples
+ ├── user_service.py # User management with 10 bugs
+ └── payment_processor.py # Payment handling with 12 bugs
+```
+
+## Inicio Rápido
+
+### JavaScript
+
+```bash
+copilot
+
+# Auditoría de seguridad
+> Review @samples/buggy-code/js/userService.js for security issues
+
+# Encuentra todos los errores
+> Find all bugs in @samples/buggy-code/js/paymentProcessor.js
+```
+
+### Python
+
+```bash
+copilot
+
+# Auditoría de seguridad
+> Review @samples/buggy-code/python/user_service.py for security issues
+
+# Encuentra todos los errores
+> Find all bugs in @samples/buggy-code/python/payment_processor.py
+```
+
+## Categorías de Errores
+
+### Común a Ambos Lenguajes
+
+| Bug Type | Description |
+|----------|-------------|
+| SQL Injection | Entrada de usuario directamente en consultas SQL |
+| Hardcoded Secrets | Claves de API y contraseñas en el código fuente |
+| Race Conditions | Estado compartido sin sincronización adecuada |
+| Sensitive Data Logging | Contraseñas y números de tarjeta en los registros |
+| Missing Input Validation | Sin comprobaciones de los datos proporcionados por el usuario |
+| No Error Handling | Falta de bloques try/catch o try/except |
+| Weak Password Comparison | Comparaciones en texto plano o vulnerables a ataques por temporización |
+| Missing Auth Checks | Operaciones sin verificación de autorización |
+
+### Errores específicos de Python
+
+| Bug Type | Description |
+|----------|-------------|
+| Pickle Deserialization | `pickle.loads()` en datos no confiables |
+| eval() Injection | Entrada del usuario pasada a `eval()` |
+| Unsafe YAML Loading | `yaml.load()` sin un loader seguro |
+| Shell Injection | Entrada de usuario en llamadas a `os.system()` |
+| Weak Hashing | MD5 para el hashing de contraseñas |
+| Insecure Random | Uso del módulo `random` con fines de seguridad |
+
+## Ejercicios Prácticos
+
+1. **Auditoría de Seguridad**: Realiza una revisión de seguridad integral y enumera todas las vulnerabilidades por severidad
+2. **Arreglar un Error**: Elige un error crítico, obtén la corrección de Copilot, entiende por qué funciona
+3. **Generar Pruebas**: Crea pruebas que detecten estos errores antes del despliegue
+4. **Refactorizar de forma segura**: Corrige los errores de inyección SQL manteniendo la funcionalidad
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/samples/src/README.md b/translations/es/samples/src/README.md
new file mode 100644
index 00000000..f8d70fff
--- /dev/null
+++ b/translations/es/samples/src/README.md
@@ -0,0 +1,66 @@
+# Código fuente de ejemplo (heredado - referencia opcional)
+
+> **Nota**: El ejemplo principal para este curso es la **aplicación de colección de libros en Python** en `../book-app-project/`. Estos archivos JS/React provienen de una versión anterior del curso y se mantienen como material de referencia adicional opcional para estudiantes que quieran ejemplos en JS.
+
+This folder contains sample source files. These are only samples and not intended to be a full running application.
+
+## Estructura
+
+```
+src/
+├── api/ # API route handlers
+│ ├── auth.js # Authentication endpoints
+│ └── users.js # User CRUD endpoints
+├── auth/ # Client-side auth handlers
+│ ├── login.js # Login form logic
+│ └── register.js # Registration form logic
+├── components/ # React components
+│ ├── Button.jsx # Reusable button
+│ └── Header.jsx # App header with nav
+├── models/ # Data models
+│ └── User.js # User model
+├── services/ # Business logic
+│ ├── productService.js
+│ └── userService.js
+├── utils/ # Helper functions
+│ └── helpers.js
+├── index.js # App entry point
+└── refactor-me.js # Beginner refactoring practice (Chapter 03)
+```
+
+## Uso
+
+Estos archivos se referencian en ejemplos del curso usando la sintaxis `@`:
+
+```bash
+copilot
+
+> Explain what @samples/src/utils/helpers.js does
+> Review @samples/src/api/ for security issues
+> Compare @samples/src/auth/login.js and @samples/src/auth/register.js
+```
+
+## Práctica de refactorización
+
+El archivo `refactor-me.js` está diseñado específicamente para los ejercicios de refactorización del Capítulo 03:
+
+```bash
+copilot
+
+> @samples/src/refactor-me.js Rename the variable 'x' to something more descriptive
+> @samples/src/refactor-me.js This function is too long. Split it into smaller functions.
+> @samples/src/refactor-me.js Remove any unused variables
+```
+
+## Notas
+
+- Los archivos contienen TODOs intencionales y problemas menores para que Copilot los encuentre durante las revisiones
+- Este es código de demostración que no está diseñado para ejecutarse realmente. NO apto para producción
+- Usado para aprender la sintaxis de referencia de archivos `@`
+
+---
+
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file