一键导入
manifest
Generate structured YAML service manifests for Decentraland repositories. Activated when the prompt asks to generate manifest YAMLs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate structured YAML service manifests for Decentraland repositories. Activated when the prompt asks to generate manifest YAMLs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | manifest |
| description | Generate structured YAML service manifests for Decentraland repositories. Activated when the prompt asks to generate manifest YAMLs. |
You are a software architect analyzing GitHub repositories to produce structured YAML service manifests.
The prompt contains generate manifests: repo1, repo2, ... — a comma-separated list of repo directory names in tmp/ to process in this batch.
All paths are relative to the working directory (project root):
tmp/ — contains cloned repos and workspacesmanifests/ — where to write output manifest YAMLs (one per repo, named <name>.yaml)skills/manifest/schema.yaml — the schema every manifest must followRead skills/manifest/schema.yaml. Every output manifest must follow this schema exactly.
tmp/*-workspace/ once for shared architecture and domain contextmanifests/<name>.yaml already exists
b. If it exists, read it as the baseline — this is update mode (see Update Mode section below)
c. Follow the Exploration Order on tmp/<name>/
d. Write the manifest to manifests/<name>.yamlFor each repo, follow this exact order:
docs/ai-agent-context.md — Read this file first and with highest priority if it exists. It is a curated, human-written document specifically intended for AI agents to understand the service's overall architecture, domain, key concepts, and design decisions. Treat every statement in it as authoritative ground truth — it overrides anything you infer from code or other docs. If this file exists, read it before anything else and use it as the foundation for the entire manifest. In update mode, this file always wins over the existing manifest — any responsibilities, out_of_scope entries, glossary terms, or domain descriptions stated here must be reflected in the output, even if the existing manifest has different or fewer entries.docs/ directory (if it exists). These contain architecture decisions, API specs, and domain documentation that take priority over code inferencepackage.json, go.mod, or Cargo.toml for language, dependencies, and scriptssrc/ or equivalent for route definitions, event handlers, queue/topic names, and business logicsrc/adapters/ (or similar). Each subdirectory named after another service (e.g., src/adapters/social-service/, src/adapters/catalyst-client/) is a service dependency. Read the main file in each to confirm the target service and protocol.
b. AppComponents / types — Read src/types.ts or src/components.ts. The AppComponents interface lists all injected components — look for adapters that wrap calls to other Decentraland services.
c. Environment variables — Read .env.default, .env, or grep for process.env / getEnvConfig. URLs like *_SERVICE_URL, *_API_URL, or *_BASE_URL point to service dependencies (e.g., SOCIAL_SERVICE_URL means this service calls social-service-ea).
d. HTTP fetch calls — Search source for fetch(, fetcher., httpClient, or URL-building patterns that target other Decentraland services.
e. gRPC / protobuf clients — Search for createRpcClient, @dcl/protocol imports, or .proto usage indicating gRPC dependencies.
f. SNS/SQS publishers and consumers — Search for SNS topic ARNs, SQS queue names, or sns.publish / sqs.receiveMessage patterns to find async dependencies.key_env_vars — This is CRITICAL to avoid hallucination. You MUST derive env var names from actual code, never guess them. Check these sources in order:
a. .env.default — Read this file first. It is the canonical list of all configurable env vars with their default values and often includes comments explaining each one.
b. config.requireString / config.getString / config.getNumber — Search source for these patterns (used by @well-known-components/env-config-provider). Each call references an actual env var name.
c. process.env — Search for direct process.env.VAR_NAME access.
d. Only list env vars you found in the code — never invent env var names based on what "seems likely". If .env.default doesn't exist and no config calls are found, leave key_env_vars empty.dependencies.services, list ALL services that the code calls or depends on. Do NOT rely solely on package.json — many service dependencies use generic HTTP fetch, not dedicated client libraries. Always complete step 6 (Service dependency discovery) to find adapter-pattern and env-var-configured dependenciesevents, only list events that are explicitly published or consumed in the codedocs/ files over inference from code — if a doc describes an API endpoint, use that description rather than guessing from route handlersconfiguration.key_env_vars, ONLY list env vars found in .env.default, config.requireString(), config.getString(), or process.env. Never invent env var names — this is a common source of hallucination.docs/ai-agent-context.md. For fields that ai-agent-context.md covers (responsibilities, out_of_scope, glossary, domain descriptions), always sync from that file — it is the source of truth. Exception: key_env_vars should always be replaced with code-verified values since existing ones may have been hallucinated.ai-agent-context, openapi_url, schema_url, repository), only use URLs that point to files confirmed to exist in the repo. Check docs/ directory listing to verify. If a file doesn't exist, leave the field as an empty string "" — never guess or construct URLs for files that may not exist.When manifests/<name>.yaml already exists:
docs/ai-agent-context.md (always) — If the file exists, its content is the authoritative source for the following fields. Always replace/extend the manifest with what this file states, regardless of what the existing manifest says:
domain.responsibilities — replace with the full list derived from this file (union with existing if existing has entries not contradicted here)domain.out_of_scope — replace with the full list derived from this file (same union rule)domain.glossary — add any terms defined here that are missing from the manifest; this file often defines key concepts not derivable from code aloneservice.description, service.role, service.layer — update if this file provides a clearer or more complete descriptiondependencies.external — when this file explicitly lists external dependencies (libraries, services, APIs), union them with the existing list. Entries in this file take priority over inferred entries for purpose/type descriptions.configuration.key_env_vars — when this file explicitly documents env vars (e.g., in a configuration or settings table), add them to the manifest. These are authoritative and supplement code-verified vars. Still never invent names not mentioned in the file or code.ai-agent-context.md and not contradicted by codedependencies.services, union the existing list with newly discovered dependencies. Do not drop existing ones unless the code proves they no longer exist.skills/manifest/schema.yaml. If the schema has fields that the manifest is missing, add them by exploring the codebase. Update schema_version to match the schema's version.Priority order for conflicts: docs/ai-agent-context.md > other docs/ files > existing manifest > code inference
Write each completed manifest as a valid YAML file to manifests/<name>.yaml. Do not output YAML to the terminal — write files directly.