natureco-cli 5.18.3 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/package.json +1 -1
- package/skills/a-b-testing/SKILL.md +34 -0
- package/skills/accessibility-audit/SKILL.md +34 -0
- package/skills/agent-memory/SKILL.md +34 -0
- package/skills/agent-orchestration/SKILL.md +34 -0
- package/skills/airunway-aks-setup/SKILL.md +73 -0
- package/skills/algorithmic-art/SKILL.md +405 -0
- package/skills/analytics-setup/SKILL.md +34 -0
- package/skills/api-design/SKILL.md +34 -0
- package/skills/api-versioning/SKILL.md +34 -0
- package/skills/appinsights-instrumentation/SKILL.md +76 -0
- package/skills/audio-transcription/SKILL.md +34 -0
- package/skills/authentication-patterns/SKILL.md +34 -0
- package/skills/authorization-rbac/SKILL.md +34 -0
- package/skills/azure-ai/SKILL.md +71 -0
- package/skills/azure-aigateway/SKILL.md +129 -0
- package/skills/azure-cloud-migrate/SKILL.md +52 -0
- package/skills/azure-compliance/SKILL.md +108 -0
- package/skills/azure-compute/SKILL.md +46 -0
- package/skills/azure-cost/SKILL.md +45 -0
- package/skills/azure-deploy/SKILL.md +97 -0
- package/skills/azure-diagnostics/SKILL.md +151 -0
- package/skills/azure-enterprise-infra-planner/SKILL.md +54 -0
- package/skills/azure-hosted-copilot-sdk/SKILL.md +89 -0
- package/skills/azure-kubernetes/SKILL.md +153 -0
- package/skills/azure-kusto/SKILL.md +231 -0
- package/skills/azure-messaging/SKILL.md +57 -0
- package/skills/azure-prepare/SKILL.md +165 -0
- package/skills/azure-quotas/SKILL.md +276 -0
- package/skills/azure-rbac/SKILL.md +17 -0
- package/skills/azure-reliability/SKILL.md +387 -0
- package/skills/azure-resource-lookup/SKILL.md +108 -0
- package/skills/azure-resource-visualizer/SKILL.md +183 -0
- package/skills/azure-storage/SKILL.md +100 -0
- package/skills/azure-upgrade/SKILL.md +91 -0
- package/skills/azure-validate/SKILL.md +72 -0
- package/skills/backup-strategy/SKILL.md +34 -0
- package/skills/bash-scripting/SKILL.md +34 -0
- package/skills/batch-api-calls/SKILL.md +34 -0
- package/skills/batch-processing/SKILL.md +34 -0
- package/skills/brainstorming/SKILL.md +159 -0
- package/skills/brand-guidelines/SKILL.md +73 -0
- package/skills/brandkit/SKILL.md +798 -0
- package/skills/brutalist-skill/SKILL.md +92 -0
- package/skills/bulk-file-operations/SKILL.md +34 -0
- package/skills/cache-responses/SKILL.md +34 -0
- package/skills/caching-strategy/SKILL.md +34 -0
- package/skills/calendar-optimization/SKILL.md +34 -0
- package/skills/canvas-design/SKILL.md +130 -0
- package/skills/cavecrew/SKILL.md +82 -0
- package/skills/caveman-commit/SKILL.md +65 -0
- package/skills/caveman-help/SKILL.md +63 -0
- package/skills/caveman-review/SKILL.md +55 -0
- package/skills/caveman-stats/SKILL.md +10 -0
- package/skills/changelog-generation/SKILL.md +34 -0
- package/skills/chat-bot-design/SKILL.md +34 -0
- package/skills/chunking-strategy/SKILL.md +34 -0
- package/skills/ci-cd-pipeline/SKILL.md +34 -0
- package/skills/classification-pipeline/SKILL.md +34 -0
- package/skills/claude-api/SKILL.md +356 -0
- package/skills/clipboard-master/SKILL.md +34 -0
- package/skills/code-explanation/SKILL.md +34 -0
- package/skills/code-generation/SKILL.md +34 -0
- package/skills/code-migration/SKILL.md +34 -0
- package/skills/code-review-checklist/SKILL.md +34 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/contact-management/SKILL.md +34 -0
- package/skills/content-generation/SKILL.md +34 -0
- package/skills/context-pruning/SKILL.md +34 -0
- package/skills/context-window-management/SKILL.md +34 -0
- package/skills/continuous-improvement/SKILL.md +34 -0
- package/skills/cron-scheduling/SKILL.md +34 -0
- package/skills/cross-platform-compat/SKILL.md +34 -0
- package/skills/csv-processing/SKILL.md +34 -0
- package/skills/daily-journal/SKILL.md +34 -0
- package/skills/data-analysis/SKILL.md +34 -0
- package/skills/data-backup/SKILL.md +34 -0
- package/skills/data-cleaning/SKILL.md +34 -0
- package/skills/data-extraction/SKILL.md +34 -0
- package/skills/data-validation/SKILL.md +34 -0
- package/skills/database-migrations/SKILL.md +34 -0
- package/skills/database-schema-design/SKILL.md +34 -0
- package/skills/decision-mapping/SKILL.md +84 -0
- package/skills/decision-matrix/SKILL.md +34 -0
- package/skills/dependency-management/SKILL.md +34 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/design-an-interface/SKILL.md +94 -0
- package/skills/design-doc-mermaid/SKILL.md +498 -0
- package/skills/dev-environment-setup/SKILL.md +34 -0
- package/skills/develop-userscripts/SKILL.md +84 -0
- package/skills/distraction-blocker/SKILL.md +34 -0
- package/skills/doc-coauthoring/SKILL.md +375 -0
- package/skills/docker-optimization/SKILL.md +34 -0
- package/skills/document-template/SKILL.md +34 -0
- package/skills/documentation/SKILL.md +109 -0
- package/skills/documentation-gen/SKILL.md +34 -0
- package/skills/docx/SKILL.md +590 -0
- package/skills/edit-article/SKILL.md +15 -0
- package/skills/efficient-formatting/SKILL.md +34 -0
- package/skills/email-management/SKILL.md +34 -0
- package/skills/email-service/SKILL.md +34 -0
- package/skills/embedding-generation/SKILL.md +34 -0
- package/skills/entity-extraction/SKILL.md +34 -0
- package/skills/entra-agent-id/SKILL.md +356 -0
- package/skills/entra-app-registration/SKILL.md +191 -0
- package/skills/environment-config/SKILL.md +34 -0
- package/skills/error-handling/SKILL.md +34 -0
- package/skills/estimation-techniques/SKILL.md +34 -0
- package/skills/event-driven-architecture/SKILL.md +34 -0
- package/skills/excel-automation/SKILL.md +34 -0
- package/skills/execution-monitoring/SKILL.md +34 -0
- package/skills/expense-tracking/SKILL.md +34 -0
- package/skills/faceless-explainer/SKILL.md +202 -0
- package/skills/fastify/SKILL.md +75 -0
- package/skills/feature-engineering/SKILL.md +34 -0
- package/skills/feature-flags/SKILL.md +34 -0
- package/skills/file-conversion/SKILL.md +34 -0
- package/skills/file-upload-handling/SKILL.md +34 -0
- package/skills/fine-tuning-prep/SKILL.md +34 -0
- package/skills/focus-mode/SKILL.md +34 -0
- package/skills/form-validation/SKILL.md +34 -0
- package/skills/function-calling/SKILL.md +34 -0
- package/skills/general-video/SKILL.md +143 -0
- package/skills/git-guardrails-claude-code/SKILL.md +95 -0
- package/skills/git-workflow/SKILL.md +34 -0
- package/skills/github-actions-docs/SKILL.md +98 -0
- package/skills/goal-setting/SKILL.md +34 -0
- package/skills/gpt-tasteskill/SKILL.md +74 -0
- package/skills/graphql-design/SKILL.md +34 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/grilling/SKILL.md +10 -0
- package/skills/habit-tracker/SKILL.md +34 -0
- package/skills/hallucination-detection/SKILL.md +34 -0
- package/skills/handoff/SKILL.md +16 -0
- package/skills/hyperframes/SKILL.md +152 -0
- package/skills/hyperframes-animation/SKILL.md +82 -0
- package/skills/hyperframes-cli/SKILL.md +109 -0
- package/skills/hyperframes-core/SKILL.md +78 -0
- package/skills/hyperframes-creative/SKILL.md +68 -0
- package/skills/hyperframes-media/SKILL.md +97 -0
- package/skills/image-processing/SKILL.md +34 -0
- package/skills/image-to-code-skill/SKILL.md +1228 -0
- package/skills/imagegen-frontend-mobile/SKILL.md +1465 -0
- package/skills/imagegen-frontend-web/SKILL.md +987 -0
- package/skills/implement/SKILL.md +15 -0
- package/skills/init/SKILL.md +91 -0
- package/skills/internal-comms/SKILL.md +32 -0
- package/skills/json-transformation/SKILL.md +34 -0
- package/skills/keyboard-shortcuts/SKILL.md +34 -0
- package/skills/knowledge-base/SKILL.md +34 -0
- package/skills/knowledge-graph/SKILL.md +34 -0
- package/skills/kubernetes-deployment/SKILL.md +34 -0
- package/skills/language-translation/SKILL.md +34 -0
- package/skills/lark-approval/SKILL.md +56 -0
- package/skills/lark-base/SKILL.md +157 -0
- package/skills/lark-doc/SKILL.md +81 -0
- package/skills/lark-shared/SKILL.md +168 -0
- package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
- package/skills/linting-neostandard-eslint9/SKILL.md +64 -0
- package/skills/llm-chaining/SKILL.md +34 -0
- package/skills/localization-i18n/SKILL.md +34 -0
- package/skills/logging-best-practices/SKILL.md +34 -0
- package/skills/loop-me/SKILL.md +32 -0
- package/skills/machine-learning-pipeline/SKILL.md +34 -0
- package/skills/meeting-notes/SKILL.md +34 -0
- package/skills/meeting-scheduler/SKILL.md +34 -0
- package/skills/message-queues/SKILL.md +34 -0
- package/skills/message-summarization/SKILL.md +34 -0
- package/skills/microservices-architecture/SKILL.md +34 -0
- package/skills/microsoft-foundry/SKILL.md +262 -0
- package/skills/migrate-to-shoehorn/SKILL.md +118 -0
- package/skills/milestone-tracking/SKILL.md +34 -0
- package/skills/minimalist-skill/SKILL.md +85 -0
- package/skills/model-deployment/SKILL.md +34 -0
- package/skills/model-evaluation/SKILL.md +34 -0
- package/skills/monitoring-setup/SKILL.md +34 -0
- package/skills/monorepo-setup/SKILL.md +34 -0
- package/skills/motion-graphics/SKILL.md +170 -0
- package/skills/multi-agent-systems/SKILL.md +34 -0
- package/skills/music-to-video/SKILL.md +197 -0
- package/skills/network-troubleshooting/SKILL.md +34 -0
- package/skills/node/SKILL.md +94 -0
- package/skills/nodejs-core/SKILL.md +156 -0
- package/skills/note-organization/SKILL.md +34 -0
- package/skills/oauth/SKILL.md +186 -0
- package/skills/obsidian-vault/SKILL.md +59 -0
- package/skills/octocat/SKILL.md +93 -0
- package/skills/openclaw-secure-linux-cloud/SKILL.md +157 -0
- package/skills/opensource-guide-coach/SKILL.md +218 -0
- package/skills/output-skill/SKILL.md +49 -0
- package/skills/package-publishing/SKILL.md +34 -0
- package/skills/password-generator/SKILL.md +34 -0
- package/skills/pdf/SKILL.md +314 -0
- package/skills/pdf-processing/SKILL.md +34 -0
- package/skills/performance-optimization/SKILL.md +34 -0
- package/skills/pomodoro-timer/SKILL.md +34 -0
- package/skills/powershell-automation/SKILL.md +34 -0
- package/skills/pptx/SKILL.md +232 -0
- package/skills/pr-to-video/SKILL.md +235 -0
- package/skills/priority-filtering/SKILL.md +34 -0
- package/skills/product-launch-video/SKILL.md +205 -0
- package/skills/project-tracking/SKILL.md +34 -0
- package/skills/prompt-compression/SKILL.md +34 -0
- package/skills/prompt-engineering/SKILL.md +34 -0
- package/skills/push-notifications/SKILL.md +34 -0
- package/skills/python-appservice-deploy/SKILL.md +36 -0
- package/skills/qa/SKILL.md +130 -0
- package/skills/rag-implementation/SKILL.md +34 -0
- package/skills/rate-limiting/SKILL.md +34 -0
- package/skills/react-best-practices/SKILL.md +149 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-view-transitions/SKILL.md +320 -0
- package/skills/readme-i18n/SKILL.md +176 -0
- package/skills/real-time-communication/SKILL.md +34 -0
- package/skills/redesign-skill/SKILL.md +178 -0
- package/skills/refactoring-strategy/SKILL.md +34 -0
- package/skills/regex-mastery/SKILL.md +34 -0
- package/skills/remotion/SKILL.md +364 -0
- package/skills/report-generation/SKILL.md +34 -0
- package/skills/request-refactor-plan/SKILL.md +68 -0
- package/skills/research-compiler/SKILL.md +34 -0
- package/skills/resolving-merge-conflicts/SKILL.md +14 -0
- package/skills/responsive-design/SKILL.md +34 -0
- package/skills/rest-api-patterns/SKILL.md +34 -0
- package/skills/retrospectives/SKILL.md +34 -0
- package/skills/risk-assessment/SKILL.md +34 -0
- package/skills/roadmap-creation/SKILL.md +34 -0
- package/skills/running-claude-code-via-litellm-copilot/SKILL.md +263 -0
- package/skills/scaffold-exercises/SKILL.md +106 -0
- package/skills/search-implementation/SKILL.md +34 -0
- package/skills/secrets-management/SKILL.md +34 -0
- package/skills/secure-linux-web-hosting/SKILL.md +162 -0
- package/skills/security-audit/SKILL.md +34 -0
- package/skills/selective-memory/SKILL.md +34 -0
- package/skills/semantic-search/SKILL.md +34 -0
- package/skills/semantic-versioning/SKILL.md +34 -0
- package/skills/sentiment-analysis/SKILL.md +34 -0
- package/skills/seo-optimization/SKILL.md +34 -0
- package/skills/setup-pre-commit/SKILL.md +91 -0
- package/skills/shadcn/SKILL.md +267 -0
- package/skills/simple/SKILL.md +52 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-optimizer/SKILL.md +47 -0
- package/skills/skills-cli/SKILL.md +281 -0
- package/skills/slack-gif-creator/SKILL.md +254 -0
- package/skills/snipgrapher/SKILL.md +58 -0
- package/skills/snippet-manager/SKILL.md +34 -0
- package/skills/soft-skill/SKILL.md +98 -0
- package/skills/sprint-planning/SKILL.md +34 -0
- package/skills/sql-query-optimization/SKILL.md +34 -0
- package/skills/stakeholder-communication/SKILL.md +34 -0
- package/skills/state-management/SKILL.md +34 -0
- package/skills/statistical-analysis/SKILL.md +34 -0
- package/skills/stitch-skill/SKILL.md +184 -0
- package/skills/streaming-responses/SKILL.md +34 -0
- package/skills/structured-output/SKILL.md +34 -0
- package/skills/summarization-techniques/SKILL.md +34 -0
- package/skills/supabase/SKILL.md +135 -0
- package/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/skills/system-diagnostics/SKILL.md +34 -0
- package/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/talking-head-recut/SKILL.md +1191 -0
- package/skills/task-decomposition/SKILL.md +34 -0
- package/skills/task-prioritization/SKILL.md +34 -0
- package/skills/taste-skill/SKILL.md +1206 -0
- package/skills/taste-skill-v1/SKILL.md +226 -0
- package/skills/tdd/SKILL.md +108 -0
- package/skills/teach/SKILL.md +140 -0
- package/skills/template-library/SKILL.md +34 -0
- package/skills/test-driven-development/SKILL.md +371 -0
- package/skills/test-generation/SKILL.md +34 -0
- package/skills/testing-strategy/SKILL.md +34 -0
- package/skills/text-expansion/SKILL.md +34 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/time-blocking/SKILL.md +34 -0
- package/skills/to-prd/SKILL.md +75 -0
- package/skills/token-budgeting/SKILL.md +34 -0
- package/skills/token-optimization/SKILL.md +34 -0
- package/skills/tool-calling-patterns/SKILL.md +34 -0
- package/skills/typescript-magician/SKILL.md +117 -0
- package/skills/tzst/SKILL.md +68 -0
- package/skills/ubiquitous-language/SKILL.md +93 -0
- package/skills/use-my-browser/SKILL.md +110 -0
- package/skills/using-superpowers/SKILL.md +121 -0
- package/skills/vector-database-setup/SKILL.md +34 -0
- package/skills/vercel-cli-with-tokens/SKILL.md +353 -0
- package/skills/vercel-optimize/SKILL.md +322 -0
- package/skills/video-editing/SKILL.md +34 -0
- package/skills/viral-instagram-reels/SKILL.md +180 -0
- package/skills/viral-short-form/SKILL.md +147 -0
- package/skills/viral-short-form-ideas/SKILL.md +184 -0
- package/skills/viral-tiktok-content/SKILL.md +180 -0
- package/skills/visualization-creation/SKILL.md +34 -0
- package/skills/web-artifacts-builder/SKILL.md +74 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-scraping/SKILL.md +34 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webhook-handling/SKILL.md +34 -0
- package/skills/website-to-video/SKILL.md +145 -0
- package/skills/weekly-review/SKILL.md +34 -0
- package/skills/workflow-automation/SKILL.md +34 -0
- package/skills/writing-beats/SKILL.md +67 -0
- package/skills/writing-fragments/SKILL.md +79 -0
- package/skills/writing-great-skills/SKILL.md +82 -0
- package/skills/writing-guidelines/SKILL.md +39 -0
- package/skills/writing-plans/SKILL.md +174 -0
- package/skills/writing-shape/SKILL.md +79 -0
- package/skills/xdrop/SKILL.md +78 -0
- package/skills/xget/SKILL.md +87 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/src/commands/code_v5.js +377 -73
- package/src/commands/repl.js +505 -86
- package/src/providers/model/anthropic.js +84 -0
- package/src/providers/model/gemini.js +49 -0
- package/src/providers/model/minimax.js +48 -0
- package/src/providers/model/ollama.js +42 -0
- package/src/providers/model/openai.js +49 -0
- package/src/providers/search/duckduckgo.js +45 -0
- package/src/providers/search/exa.js +52 -0
- package/src/providers/search/searxng.js +51 -0
- package/src/providers/search/tavily.js +47 -0
- package/src/tools/model_provider.js +71 -0
- package/src/tools/parallel_search.js +40 -49
- package/src/tools/search_provider.js +79 -0
- package/src/tools/skills_download.js +217 -0
- package/src/tools/web_search.js +42 -62
- package/src/tools/workflow.js +21 -9
- package/src/utils/cron.js +82 -126
- package/src/utils/effort-levels.js +42 -0
- package/src/utils/fallback-chain.js +72 -0
- package/src/utils/file-history.js +78 -0
- package/src/utils/model-provider.js +113 -0
- package/src/utils/permissions.js +147 -0
- package/src/utils/plan-mode.js +164 -0
- package/src/utils/provider-detect.js +7 -32
- package/src/utils/sandbox.js +60 -0
- package/src/utils/search-provider.js +62 -0
- package/src/utils/session-search.js +66 -0
- package/src/utils/structured-output.js +20 -0
- package/src/utils/system-prompt.js +28 -2
- package/src/utils/tasks.js +132 -0
- package/src/utils/tool-hooks.js +154 -0
- package/src/utils/tools.js +18 -2
- package/src/utils/ultra-review.js +59 -0
- package/src/utils/worktree.js +192 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vercel-react-view-transitions
|
|
3
|
+
description: Guide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view transitions, `startViewTransition`, `ViewTransition`, transition types, or asks about animating between UI states in React without third-party animation libraries.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: vercel
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# React View Transitions
|
|
11
|
+
|
|
12
|
+
Animate between UI states using the browser's native `document.startViewTransition`. Declare *what* with `<ViewTransition>`, trigger *when* with `startTransition` / `useDeferredValue` / `Suspense`, control *how* with CSS classes. Unsupported browsers skip animations gracefully.
|
|
13
|
+
|
|
14
|
+
## When to Animate
|
|
15
|
+
|
|
16
|
+
Every `<ViewTransition>` should communicate a spatial relationship or continuity. If you can't articulate what it communicates, don't add it.
|
|
17
|
+
|
|
18
|
+
Implement **all** applicable patterns from this list, in this order:
|
|
19
|
+
|
|
20
|
+
| Priority | Pattern | What it communicates |
|
|
21
|
+
|----------|---------|---------------------|
|
|
22
|
+
| 1 | **Shared element** (`name`) | "Same thing — going deeper" |
|
|
23
|
+
| 2 | **Suspense reveal** | "Data loaded" |
|
|
24
|
+
| 3 | **List identity** (per-item `key`) | "Same items, new arrangement" |
|
|
25
|
+
| 4 | **State change** (`enter`/`exit`) | "Something appeared/disappeared" |
|
|
26
|
+
| 5 | **Route change** (layout-level) | "Going to a new place" |
|
|
27
|
+
|
|
28
|
+
This is an implementation order, not a "pick one" list. Implement every pattern that fits the app. Only skip a pattern if the app has no use case for it.
|
|
29
|
+
|
|
30
|
+
### Choosing Animation Style
|
|
31
|
+
|
|
32
|
+
| Context | Animation | Why |
|
|
33
|
+
|---------|-----------|-----|
|
|
34
|
+
| Hierarchical navigation (list → detail) | Type-keyed `nav-forward` / `nav-back` | Communicates spatial depth |
|
|
35
|
+
| Lateral navigation (tab-to-tab) | Bare `<ViewTransition>` (fade) or `default="none"` | No depth to communicate |
|
|
36
|
+
| Suspense reveal | `enter`/`exit` string props | Content arriving |
|
|
37
|
+
| Revalidation / background refresh | `default="none"` | Silent — no animation needed |
|
|
38
|
+
|
|
39
|
+
Reserve directional slides for hierarchical navigation (list → detail) and ordered sequences (prev/next photo, carousel, paginated results). For ordered sequences, the direction communicates position: "next" slides from right, "previous" from left. Lateral/unordered navigation (tab-to-tab) should not use directional slides — it falsely implies spatial depth.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Availability
|
|
44
|
+
|
|
45
|
+
- **Next.js:** Do **not** install `react@canary` — the App Router already bundles React canary internally. `ViewTransition` works out of the box. `npm ls react` may show a stable-looking version; this is expected.
|
|
46
|
+
- **Without Next.js:** Install `react@canary react-dom@canary` (`ViewTransition` is not in stable React).
|
|
47
|
+
- Browser support: Chromium 111+, Firefox 144+, Safari 18.2+. Graceful degradation on unsupported browsers.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Implementation Workflow
|
|
52
|
+
|
|
53
|
+
When adding view transitions to an existing app, **follow `references/implementation.md` step by step.** Start with the audit — do not skip it. Copy the CSS recipes from `references/css-recipes.md` into the global stylesheet — do not write your own animation CSS.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Core Concepts
|
|
58
|
+
|
|
59
|
+
### The `<ViewTransition>` Component
|
|
60
|
+
|
|
61
|
+
```jsx
|
|
62
|
+
import { ViewTransition } from 'react';
|
|
63
|
+
|
|
64
|
+
<ViewTransition>
|
|
65
|
+
<Component />
|
|
66
|
+
</ViewTransition>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
React auto-assigns a unique `view-transition-name` and calls `document.startViewTransition` behind the scenes. Never call `startViewTransition` yourself.
|
|
70
|
+
|
|
71
|
+
### Animation Triggers
|
|
72
|
+
|
|
73
|
+
| Trigger | When it fires |
|
|
74
|
+
|---------|--------------|
|
|
75
|
+
| **enter** | `<ViewTransition>` first inserted during a Transition |
|
|
76
|
+
| **exit** | `<ViewTransition>` first removed during a Transition |
|
|
77
|
+
| **update** | DOM mutations inside a `<ViewTransition>`. With nested VTs, mutation applies to the innermost one |
|
|
78
|
+
| **share** | Named VT unmounts and another with same `name` mounts in the same Transition |
|
|
79
|
+
|
|
80
|
+
Only `startTransition`, `useDeferredValue`, or `Suspense` activate VTs. Regular `setState` does not animate.
|
|
81
|
+
|
|
82
|
+
### Critical Placement Rule
|
|
83
|
+
|
|
84
|
+
`<ViewTransition>` only activates enter/exit if it appears **before any DOM nodes**:
|
|
85
|
+
|
|
86
|
+
```jsx
|
|
87
|
+
// Works
|
|
88
|
+
<ViewTransition enter="auto" exit="auto">
|
|
89
|
+
<div>Content</div>
|
|
90
|
+
</ViewTransition>
|
|
91
|
+
|
|
92
|
+
// Broken — div wraps the VT, suppressing enter/exit
|
|
93
|
+
<div>
|
|
94
|
+
<ViewTransition enter="auto" exit="auto">
|
|
95
|
+
<div>Content</div>
|
|
96
|
+
</ViewTransition>
|
|
97
|
+
</div>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Styling with View Transition Classes
|
|
103
|
+
|
|
104
|
+
### Props
|
|
105
|
+
|
|
106
|
+
Values: `"auto"` (browser cross-fade), `"none"` (disabled), `"class-name"` (custom CSS), or `{ [type]: value }` for type-specific animations.
|
|
107
|
+
|
|
108
|
+
```jsx
|
|
109
|
+
<ViewTransition default="none" enter="slide-in" exit="slide-out" share="morph" />
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
If `default` is `"none"`, all triggers are off unless explicitly listed.
|
|
113
|
+
|
|
114
|
+
### CSS Pseudo-Elements
|
|
115
|
+
|
|
116
|
+
- `::view-transition-old(.class)` — outgoing snapshot
|
|
117
|
+
- `::view-transition-new(.class)` — incoming snapshot
|
|
118
|
+
- `::view-transition-group(.class)` — container
|
|
119
|
+
- `::view-transition-image-pair(.class)` — old + new pair
|
|
120
|
+
|
|
121
|
+
See `references/css-recipes.md` for ready-to-use animation recipes.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Transition Types
|
|
126
|
+
|
|
127
|
+
Tag transitions with `addTransitionType` so VTs can pick different animations based on context. Call it multiple times to stack types — different VTs in the tree react to different types:
|
|
128
|
+
|
|
129
|
+
```jsx
|
|
130
|
+
startTransition(() => {
|
|
131
|
+
addTransitionType('nav-forward');
|
|
132
|
+
addTransitionType('select-item');
|
|
133
|
+
router.push('/detail/1');
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Pass an object to map types to CSS classes. Works on `enter`, `exit`, **and** `share`:
|
|
138
|
+
|
|
139
|
+
```jsx
|
|
140
|
+
<ViewTransition
|
|
141
|
+
enter={{ 'nav-forward': 'slide-from-right', 'nav-back': 'slide-from-left', default: 'none' }}
|
|
142
|
+
exit={{ 'nav-forward': 'slide-to-left', 'nav-back': 'slide-to-right', default: 'none' }}
|
|
143
|
+
share={{ 'nav-forward': 'morph-forward', 'nav-back': 'morph-back', default: 'morph' }}
|
|
144
|
+
default="none"
|
|
145
|
+
>
|
|
146
|
+
<Page />
|
|
147
|
+
</ViewTransition>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`enter` and `exit` don't have to be symmetric. For example, fade in but slide out directionally:
|
|
151
|
+
|
|
152
|
+
```jsx
|
|
153
|
+
<ViewTransition
|
|
154
|
+
enter={{ 'nav-forward': 'fade-in', 'nav-back': 'fade-in', default: 'none' }}
|
|
155
|
+
exit={{ 'nav-forward': 'nav-forward', 'nav-back': 'nav-back', default: 'none' }}
|
|
156
|
+
default="none"
|
|
157
|
+
>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**TypeScript:** `ViewTransitionClassPerType` requires a `default` key in the object.
|
|
161
|
+
|
|
162
|
+
For apps with multiple pages, extract the type-keyed VT into a reusable wrapper:
|
|
163
|
+
|
|
164
|
+
```jsx
|
|
165
|
+
export function DirectionalTransition({ children }: { children: React.ReactNode }) {
|
|
166
|
+
return (
|
|
167
|
+
<ViewTransition
|
|
168
|
+
enter={{ 'nav-forward': 'nav-forward', 'nav-back': 'nav-back', default: 'none' }}
|
|
169
|
+
exit={{ 'nav-forward': 'nav-forward', 'nav-back': 'nav-back', default: 'none' }}
|
|
170
|
+
default="none"
|
|
171
|
+
>
|
|
172
|
+
{children}
|
|
173
|
+
</ViewTransition>
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### `router.back()` and Browser Back Button
|
|
179
|
+
|
|
180
|
+
`router.back()` and the browser's back/forward buttons do **not** trigger view transitions (`popstate` is synchronous, incompatible with `startViewTransition`). Use `router.push()` with an explicit URL instead.
|
|
181
|
+
|
|
182
|
+
### Types and Suspense
|
|
183
|
+
|
|
184
|
+
Types are available during navigation but **not** during subsequent Suspense reveals (separate transitions, no type). Use type maps for page-level enter/exit; use simple string props for Suspense reveals.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Shared Element Transitions
|
|
189
|
+
|
|
190
|
+
Same `name` on two VTs — one unmounting, one mounting — creates a shared element morph:
|
|
191
|
+
|
|
192
|
+
```jsx
|
|
193
|
+
<ViewTransition name="hero-image">
|
|
194
|
+
<img src="/thumb.jpg" onClick={() => startTransition(() => onSelect())} />
|
|
195
|
+
</ViewTransition>
|
|
196
|
+
|
|
197
|
+
// On the other view — same name
|
|
198
|
+
<ViewTransition name="hero-image">
|
|
199
|
+
<img src="/full.jpg" />
|
|
200
|
+
</ViewTransition>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
- Only one VT with a given `name` can be mounted at a time — use unique names (`photo-${id}`). Watch for reusable components: if a component with a named VT is rendered in both a modal/popover *and* a page, both mount simultaneously and break the morph. Either make the name conditional (via a prop) or move the named VT out of the shared component into the specific consumer.
|
|
204
|
+
- `share` takes precedence over `enter`/`exit`. Think through each navigation path: when no matching pair forms (e.g., the target page doesn't have the same name), `enter`/`exit` fires instead. Consider whether the element needs a fallback animation for those paths.
|
|
205
|
+
- Never use a fade-out exit on pages with shared morphs — use a directional slide instead.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Common Patterns
|
|
210
|
+
|
|
211
|
+
### Enter/Exit
|
|
212
|
+
|
|
213
|
+
```jsx
|
|
214
|
+
{show && (
|
|
215
|
+
<ViewTransition enter="fade-in" exit="fade-out"><Panel /></ViewTransition>
|
|
216
|
+
)}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### List Reorder
|
|
220
|
+
|
|
221
|
+
```jsx
|
|
222
|
+
{items.map(item => (
|
|
223
|
+
<ViewTransition key={item.id}><ItemCard item={item} /></ViewTransition>
|
|
224
|
+
))}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Trigger inside `startTransition`. Avoid wrapper `<div>`s between list and VT.
|
|
228
|
+
|
|
229
|
+
### Composing Shared Elements with List Identity
|
|
230
|
+
|
|
231
|
+
Shared elements and list identity are independent concerns — don't confuse one for the other. When a list item contains a shared element (e.g., an image that morphs into a detail view), use two nested `<ViewTransition>` boundaries:
|
|
232
|
+
|
|
233
|
+
```jsx
|
|
234
|
+
{items.map(item => (
|
|
235
|
+
<ViewTransition key={item.id}> {/* list identity */}
|
|
236
|
+
<Link href={`/items/${item.id}`}>
|
|
237
|
+
<ViewTransition name={`item-image-${item.id}`} share="morph"> {/* shared element */}
|
|
238
|
+
<Image src={item.image} />
|
|
239
|
+
</ViewTransition>
|
|
240
|
+
<p>{item.name}</p>
|
|
241
|
+
</Link>
|
|
242
|
+
</ViewTransition>
|
|
243
|
+
))}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
The outer VT handles list reorder/enter animations. The inner VT handles the cross-route shared element morph. Missing either layer means that animation silently doesn't happen.
|
|
247
|
+
|
|
248
|
+
### Force Re-Enter with `key`
|
|
249
|
+
|
|
250
|
+
```jsx
|
|
251
|
+
<ViewTransition key={searchParams.toString()} enter="slide-up" default="none">
|
|
252
|
+
<ResultsGrid />
|
|
253
|
+
</ViewTransition>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Caution:** If wrapping `<Suspense>`, changing `key` remounts the boundary and refetches.
|
|
257
|
+
|
|
258
|
+
### Suspense Fallback to Content
|
|
259
|
+
|
|
260
|
+
Simple cross-fade:
|
|
261
|
+
```jsx
|
|
262
|
+
<ViewTransition>
|
|
263
|
+
<Suspense fallback={<Skeleton />}><Content /></Suspense>
|
|
264
|
+
</ViewTransition>
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Directional reveal:
|
|
268
|
+
```jsx
|
|
269
|
+
<Suspense fallback={<ViewTransition exit="slide-down"><Skeleton /></ViewTransition>}>
|
|
270
|
+
<ViewTransition enter="slide-up" default="none"><Content /></ViewTransition>
|
|
271
|
+
</Suspense>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
For more patterns, see `references/patterns.md`.
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## How Multiple VTs Interact
|
|
279
|
+
|
|
280
|
+
Every VT matching the trigger fires simultaneously in a single `document.startViewTransition`. VTs in **different** transitions (navigation vs later Suspense resolve) don't compete.
|
|
281
|
+
|
|
282
|
+
### Use `default="none"` Liberally
|
|
283
|
+
|
|
284
|
+
Without it, every VT fires the browser cross-fade on **every** transition — Suspense resolves, `useDeferredValue` updates, background revalidations. Always use `default="none"` and explicitly enable only desired triggers.
|
|
285
|
+
|
|
286
|
+
### Two Patterns Coexist
|
|
287
|
+
|
|
288
|
+
**Pattern A — Directional slides:** Type-keyed VT on each page, fires during navigation.
|
|
289
|
+
**Pattern B — Suspense reveals:** Simple string props, fires when data loads (no type).
|
|
290
|
+
|
|
291
|
+
They coexist because they fire at different moments. `default="none"` on both prevents cross-interference. Always pair `enter` with `exit`. Place directional VTs in page components, not layouts.
|
|
292
|
+
|
|
293
|
+
### Nested VT Limitation
|
|
294
|
+
|
|
295
|
+
When a parent VT exits, nested VTs inside it do **not** fire their own enter/exit — only the outermost VT animates. Per-item staggered animations during page navigation are not possible today. See [react#36135](https://github.com/facebook/react/pull/36135) for an experimental opt-in fix.
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## Next.js Integration
|
|
300
|
+
|
|
301
|
+
For Next.js setup (`experimental.viewTransition` flag, `transitionTypes` prop on `next/link`, App Router patterns, Server Components), see `references/nextjs.md`.
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Accessibility
|
|
306
|
+
|
|
307
|
+
Always add the reduced motion CSS from `references/css-recipes.md` to your global stylesheet.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Reference Files
|
|
312
|
+
|
|
313
|
+
- **`references/implementation.md`** — Step-by-step implementation workflow.
|
|
314
|
+
- **`references/patterns.md`** — Patterns, animation timing, events API, troubleshooting.
|
|
315
|
+
- **`references/css-recipes.md`** — Ready-to-use CSS animation recipes.
|
|
316
|
+
- **`references/nextjs.md`** — Next.js App Router patterns and Server Component details.
|
|
317
|
+
|
|
318
|
+
## Full Compiled Document
|
|
319
|
+
|
|
320
|
+
For the complete guide with all reference files expanded: `AGENTS.md`
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: readme-i18n
|
|
3
|
+
description: Use when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized README variants in a GitHub-style repository.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Localize a repository `README.md` without breaking the repo mechanics around it.
|
|
7
|
+
|
|
8
|
+
The default job is translate + wire-up:
|
|
9
|
+
|
|
10
|
+
- read the source-of-truth README
|
|
11
|
+
- create localized sibling files such as `README.zh.md`
|
|
12
|
+
- preserve GitHub-flavored Markdown structure and repo-specific tokens
|
|
13
|
+
- add or update a shared language selector near the top of every variant
|
|
14
|
+
|
|
15
|
+
This skill is for multilingual README workflows, not general website/app i18n.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Expect these inputs when available:
|
|
20
|
+
|
|
21
|
+
- source README path, default `README.md`
|
|
22
|
+
- source language, default inferred or English
|
|
23
|
+
- one or more target languages
|
|
24
|
+
- optional glossary or do-not-translate list
|
|
25
|
+
- optional filename override if the repo already uses a different multilingual naming pattern
|
|
26
|
+
|
|
27
|
+
If target languages are not named, inspect existing translated files, selectors, filenames, issues, or prior repo conventions. If that still leaves the target languages unclear, ask once. Do not invent target languages.
|
|
28
|
+
|
|
29
|
+
## Defaults And Decision Rules
|
|
30
|
+
|
|
31
|
+
- Treat the root `README.md` as the source-of-truth unless the user explicitly says otherwise.
|
|
32
|
+
- If the source language is ambiguous, ask once. Otherwise assume English.
|
|
33
|
+
- Keep section order aligned with the source README. Only make a small heading wording adjustment when needed to produce a valid localized anchor.
|
|
34
|
+
- Output localized siblings with `README.<bcp47-tag>.md` naming unless the repo already has a different established pattern that should be preserved.
|
|
35
|
+
- Update an existing language selector in place. Do not duplicate it.
|
|
36
|
+
- Translate only human-language content.
|
|
37
|
+
- Preserve project names, package names, commands, CLI flags, option names, environment variables, URLs, file paths, inline code, code fences, HTML attributes, and badge/image URLs.
|
|
38
|
+
- Badge alt text or visible labels may be translated only when the change does not require changing the badge URL, query params, or image source.
|
|
39
|
+
- If a glossary or do-not-translate list is provided, apply it consistently across every target language.
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
### 1. Establish the source README and languages
|
|
44
|
+
|
|
45
|
+
- Confirm the source README path. Default to `README.md`.
|
|
46
|
+
- Identify the source language from the file contents and repo context.
|
|
47
|
+
- Determine target languages from the request or existing repo pattern.
|
|
48
|
+
- Note any glossary terms, product names, or phrases that must stay untranslated.
|
|
49
|
+
|
|
50
|
+
### 2. Audit the Markdown structure before translating
|
|
51
|
+
|
|
52
|
+
Read the source README once as structure, not prose. Open [`references/preservation-checklist.md`](./references/preservation-checklist.md) and inventory the elements most likely to break:
|
|
53
|
+
|
|
54
|
+
- headings and heading levels
|
|
55
|
+
- badge rows, shields URLs, and image links
|
|
56
|
+
- tables and alignment rows
|
|
57
|
+
- raw HTML blocks and inline HTML
|
|
58
|
+
- GitHub alerts or admonitions such as `> [!NOTE]`
|
|
59
|
+
- code fences, inline code, commands, and config snippets
|
|
60
|
+
- intra-document anchors such as `(#installation)`
|
|
61
|
+
- relative links to files, docs, screenshots, or other README variants
|
|
62
|
+
|
|
63
|
+
If the README already has localized siblings, inspect them too before choosing filenames or selector style.
|
|
64
|
+
|
|
65
|
+
### 3. Translate only the prose layer
|
|
66
|
+
|
|
67
|
+
Translate:
|
|
68
|
+
|
|
69
|
+
- paragraph text
|
|
70
|
+
- list item prose
|
|
71
|
+
- table cell prose
|
|
72
|
+
- visible text inside HTML blocks
|
|
73
|
+
- image alt text when safe
|
|
74
|
+
- selector labels and other human-facing labels
|
|
75
|
+
|
|
76
|
+
Do not translate:
|
|
77
|
+
|
|
78
|
+
- fenced code blocks
|
|
79
|
+
- inline code spans
|
|
80
|
+
- shell commands
|
|
81
|
+
- flags such as `--help`
|
|
82
|
+
- env vars such as `OPENAI_API_KEY`
|
|
83
|
+
- URLs
|
|
84
|
+
- file paths
|
|
85
|
+
- repo/package/project identifiers
|
|
86
|
+
- badge and image URLs
|
|
87
|
+
|
|
88
|
+
When in doubt, preserve the literal token and translate the surrounding sentence instead.
|
|
89
|
+
|
|
90
|
+
### 4. Preserve structure while writing the localized README
|
|
91
|
+
|
|
92
|
+
- Keep the same heading hierarchy and section order as the source.
|
|
93
|
+
- Keep the same number of code fences unless the user explicitly asks to rewrite examples.
|
|
94
|
+
- Preserve table shape, list nesting, HTML wrappers, and Markdown comments.
|
|
95
|
+
- Preserve relative links unless a link intentionally needs to point at a localized sibling README.
|
|
96
|
+
|
|
97
|
+
### 5. Rewrite localized anchors and anchor-dependent links
|
|
98
|
+
|
|
99
|
+
When a translated heading changes, GitHub will generate a different heading ID. After translating headings:
|
|
100
|
+
|
|
101
|
+
- rewrite every same-file `(#...)` link so it matches the localized heading slug in that file
|
|
102
|
+
- preserve custom explicit anchors such as `<a id="...">` unless the file already uses localized explicit IDs
|
|
103
|
+
- verify that every intra-document anchor target resolves to an existing heading or explicit anchor
|
|
104
|
+
|
|
105
|
+
Prefer a small heading wording adjustment over a broken anchor. The section order should still match the source README.
|
|
106
|
+
|
|
107
|
+
### 6. Write sibling files using the repo's naming pattern
|
|
108
|
+
|
|
109
|
+
Default to sibling filenames like:
|
|
110
|
+
|
|
111
|
+
- `README.zh.md`
|
|
112
|
+
- `README.es.md`
|
|
113
|
+
- `README.fr.md`
|
|
114
|
+
|
|
115
|
+
If the repo already uses a different multilingual naming pattern, keep using it consistently rather than forcing the default pattern.
|
|
116
|
+
|
|
117
|
+
### 7. Insert or update the language selector
|
|
118
|
+
|
|
119
|
+
Open [`references/language-selector-reference.md`](./references/language-selector-reference.md) before editing selectors.
|
|
120
|
+
|
|
121
|
+
Placement:
|
|
122
|
+
|
|
123
|
+
- keep the selector near the top of the file
|
|
124
|
+
- if the README starts with a title, badges, hero image, or short intro block, place the selector immediately after that opening cluster
|
|
125
|
+
|
|
126
|
+
Behavior:
|
|
127
|
+
|
|
128
|
+
- update an existing selector block in place if one already exists
|
|
129
|
+
- if you add a new selector, use the canonical marker comments from the reference file so later runs can update it deterministically
|
|
130
|
+
- emphasize the current language and link the other variants
|
|
131
|
+
- keep selector order and labels consistent across every README variant
|
|
132
|
+
|
|
133
|
+
### 8. Final verification
|
|
134
|
+
|
|
135
|
+
Before finishing, verify:
|
|
136
|
+
|
|
137
|
+
- localized filenames follow the chosen pattern
|
|
138
|
+
- every README variant contains exactly one selector block
|
|
139
|
+
- code fence counts are preserved
|
|
140
|
+
- badge/image URLs and relative file links still point to the original targets unless intentionally localized
|
|
141
|
+
- every `(#...)` link resolves inside its own file
|
|
142
|
+
- the localized README still feels structurally identical to the source
|
|
143
|
+
|
|
144
|
+
## Output
|
|
145
|
+
|
|
146
|
+
Produce:
|
|
147
|
+
|
|
148
|
+
- one localized sibling README per target language
|
|
149
|
+
- an updated selector block in every README variant
|
|
150
|
+
- a brief note to the user covering created or updated files, any assumptions, and any terms intentionally left untranslated
|
|
151
|
+
|
|
152
|
+
## Maintenance Note
|
|
153
|
+
|
|
154
|
+
Keep `README.md` as the canonical source unless the user says otherwise. When the source README changes later, update each localized sibling by diffing the changed prose, then re-check selectors, filenames, and anchor links instead of reformatting the whole file from scratch.
|
|
155
|
+
|
|
156
|
+
## Example Prompts
|
|
157
|
+
|
|
158
|
+
**Example 1**
|
|
159
|
+
|
|
160
|
+
`Translate this README into Chinese and add a language switcher. Keep badge URLs, code fences, and all commands exactly as they are.`
|
|
161
|
+
|
|
162
|
+
**Example 2**
|
|
163
|
+
|
|
164
|
+
`Make the repo multilingual. Add Spanish and Chinese README variants, keep the internal anchor links working, and wire the selector into every file.`
|
|
165
|
+
|
|
166
|
+
**Example 3**
|
|
167
|
+
|
|
168
|
+
`We already have README.zh.md. Add README.es.md and update the existing selector in place instead of adding a second one.`
|
|
169
|
+
|
|
170
|
+
## Common Mistakes
|
|
171
|
+
|
|
172
|
+
- Translating fenced code blocks or inline code instead of only the prose around them
|
|
173
|
+
- Duplicating the language selector instead of updating the existing block
|
|
174
|
+
- Translating a heading but forgetting to rewrite same-file `(#...)` links
|
|
175
|
+
- Changing badge URLs or image sources while trying to translate visible labels
|
|
176
|
+
- Reordering sections in the localized README even though the source README is the authority
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: real-time-communication
|
|
3
|
+
description: Implement real-time features with WebSockets, SSE, and WebRTC
|
|
4
|
+
category: Software Development
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Real Time Communication
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
Implement real-time features with WebSockets, SSE, and WebRTC. This skill helps you apply structured, repeatable methods for consistent results.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
- When you need to apply real time communication best practices
|
|
14
|
+
- When establishing processes or standards for your workflow
|
|
15
|
+
- When training team members on real time communication
|
|
16
|
+
- When automating or optimizing real time communication tasks
|
|
17
|
+
|
|
18
|
+
## Instructions
|
|
19
|
+
1. **Assess**: Evaluate the current state, requirements, and constraints
|
|
20
|
+
2. **Plan**: Define the approach, steps, and success criteria
|
|
21
|
+
3. **Execute**: Follow the established patterns and best practices
|
|
22
|
+
4. **Verify**: Check results against expected outcomes and quality standards
|
|
23
|
+
5. **Iterate**: Refine based on feedback and lessons learned
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
```
|
|
27
|
+
User: Help me apply real time communication for my current project
|
|
28
|
+
Assistant: I'll help you apply real time communication step by step...
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Related Skills
|
|
32
|
+
- Use with `workflow` tool for orchestrated execution
|
|
33
|
+
- Combine with `task` tool for delegated processing
|
|
34
|
+
- Reference `system-prompt` for system-level integration
|