Skip to main content

doc-create

Guide for creating documentation. Use this when asked to create documentation for a new policy or modify existing documentation.

소스 정보

저장소
wso2/gateway-controllers
최근 소스 활동
2026년 4월 24일 12:33
감지된 SKILL.md 언어
영어
스타
13
포크
63

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
doc-create
description
Guide for creating documentation. Use this when asked to create documentation for a new policy or modify existing documentation.
# Documentation Creation Guide Use this skill when the user asks to create **new policy documentation** or to **migrate/update existing documentation** so it follows the unified structure defined in [DOC_STRUCTURE.md](../../../DOC_STRUCTURE.md). ## Primary Requirements ### Folder Structure (Must Match Repo Convention) For a policy named `<policy-name>` and version folder `v0.1`, documentation MUST live under: - `docs/<policy-name>/v0.1/metadata.json` - `docs/<policy-name>/v0.1/docs/<policy-name>.md` Notes: - Keep the existing folder naming conventions (kebab-case policy names, `v0.1/` version folder). ### metadata.json (Must Match Existing Structure) Create/update `metadata.json` using this exact shape: ```json { "name": "<POLICY_NAME>", "displayName": "<POLICY_DISPLAY_NAME>", "version": "<POLICY_VERSION>", "provider": "<PROVIDER_NAME>", "categories": ["CATEGORY_1"], "description": "<DESCRIPTION>" } ``` Conventions observed in this repo: - `provider` is typically `WSO2`. - `version` is typically `0.1` for `v0.1/` docs. ### Documentation Structure (Strict) All policy markdown docs MUST follow the structure in [DOC_STRUCTURE.md](../../../DOC_STRUCTURE.md). Section inclusion rules: - Required sections MUST always be present: `Overview`, `Features`, `Configuration`, `Reference Scenarios`. - Optional sections MUST NOT be added by default. - For **new docs**: include an optional section only if the user explicitly specifies which optional section(s) to include. - For **migrations**: include an optional section only if the migration mapping (or existing doc content) requires it. Use these headings (recommended canonical form): ```markdown --- title: "Overview" --- # <Policy Display Name> ## Overview ## Features ## Configuration ### User Parameters (API Definition) ### System Parameters (From config.toml) <!-- Include only if system-level parameters exist --> ## Reference Scenarios ## How it Works ## Limitations ## Notes ## Related Policies ``` Rules: - The four required sections are: `Overview`, `Features`, `Configuration`, `Reference Scenarios`. - Do not add extra top-level sections beyond this template. - Optional sections are: `How it Works`, `Limitations`, `Notes`, `Related Policies`. - Use markdown lists for `Features`. - Put all examples (working configs, before/after transformations, error responses) under `Reference Scenarios`. - `Configuration` MUST include a `build.yaml` integration subsection showing the policy entry snippet. ### Configuration Must Include build.yaml Entry (Mandatory) Every policy documentation MUST include a subsection under `Configuration` that shows what should be added under `policies:` in `build.yaml`, aligned with: - This change is done in the `api-platform` repository. - `build.yaml` path: `/gateway/build.yaml` - Reference: https://github.com/wso2/api-platform/blob/main/gateway/build.yaml Use this format depending on the runtime (replace `<policy-name>`): For Go policies: ```yaml - name: <policy-name> gomodule: github.com/wso2/gateway-controllers/policies/<policy-name>@v0 ``` For Python policies: ```yaml - name: <policy-name> pipPackage: github.com/wso2/gateway-controllers/policies/<policy-name>@v0 ``` Example (Go): ```yaml - name: add-headers gomodule: github.com/wso2/gateway-controllers/policies/add-headers@v0 ``` Example (Python): ```yaml - name: prompt-compressor pipPackage: github.com/wso2/gateway-controllers/policies/prompt-compressor@v0 ``` ## Workflow: Create New Documentation Follow these steps when the user asks to create docs for a policy that does not yet have documentation in the new structure. 1. Determine: - `<policy-name>` (kebab-case) - display name - version folder (default to `v0.1/` unless the user says otherwise) - categories 2. Review the policy source before documenting: - Read `policies/<policy-name>/policy-definition.yaml`. - Read the relevant implementation files in `policies/<policy-name>/` (for example, main policy logic and key helpers/tests where needed) to understand actual behavior. - Use this understanding as the source of truth before writing docs. 3. Create the required folder structure under `docs/<policy-name>/v0.1/`. 4. Create `metadata.json` with the exact structure above. 5. Create `docs/<policy-name>.md` using the strict structure: - Fill in `Overview` (what it does, when to use). - List capabilities in `Features`. - In `Configuration`, document all parameters: - `User Parameters (API Definition)` (per-API/route) - `System Parameters (Comes from config.toml)` (gateway-level) **only if system-level parameters exist**. - Mandatory `build.yaml` entry snippet under `policies:`. - Use tables where appropriate (common format below). - In `Reference Scenarios`, include realistic, working examples. - Add optional sections only if the user explicitly requested them (and only those sections requested). ### Configuration Tables (Recommended Standard) When documenting parameters, prefer this table format: ```markdown | Parameter | Type | Required | Default | Description | |----------|------|----------|---------|-------------| | ... | ... | ... | ... | ... | ``` Use `yaml` code blocks for API definition examples and `toml` for system config examples. ## Workflow: Migrate / Update Existing Documentation Follow these steps when the user asks to update older docs so they adhere to the new template. 1. Locate the existing policy documentation markdown under `docs/<policy-name>/...`. 2. Review the policy source before updating docs: - Read `policies/<policy-name>/policy-definition.yaml`. - Read the relevant implementation files in `policies/<policy-name>/` to verify real behavior. - Use implementation + definition as the baseline when fixing or rewriting content. 3. Preserve existing content unless implementation changed: - Keep the `Features` section content from the original doc as-is unless the associated implementation has changed. - Keep existing tables under `Configuration` as-is unless the associated implementation has changed. - Keep existing sample YAMLs as-is unless the associated implementation has changed. 4. Rewrite/restructure the doc to match the strict section template: - Ensure required sections exist. - Move all examples, error responses, and transformations into `Reference Scenarios`. 5. Apply the migration mapping rules from [DOC_STRUCTURE.md](../../../DOC_STRUCTURE.md). - Note: the migration guide mentions “Examples”; in the new structure, that content belongs in `Reference Scenarios`. 6. Include optional sections only when required by migration: - If the old doc has `## Internal Architecture` (or `## How It Works`), create/use `## How it Works` and migrate the content. - If the old doc has `## Best Practices`, `## Security Considerations`, `## Performance Considerations`, or `## Troubleshooting`, create `## Notes` and merge the content. - While merging into `## Notes`, include all useful points (best practices, security guidance, performance guidance, troubleshooting tips, caveats) and avoid dropping actionable details. - If an optional section is absent in the source and no mapping requires it, do not add it. 7. Ensure `Configuration` includes the mandatory `build.yaml` policy entry snippet under `policies:`. 8. Remove/merge old sections as needed so the final result only has the template headings. ### Migration Mapping (From DOC_STRUCTURE.md) | Old Section | Migration Action | |-------------|------------------| | `## Internal Architecture` | Rename to `## How it Works` | | `## How It Works` | Rename to `## How it Works` | | `## Use Cases` | Merge into `## Reference Scenarios` | | `## Error Handling` / `## Error Response` | Move into `## Reference Scenarios` | | `## Request/Response Flow Examples` | Merge into `## Reference Scenarios` | | `## Policy Behavior` | Merge into `## Notes` or `## How it Works` | | `## Best Practices` | Merge into `## Notes` | | `## Security Considerations` | Merge into `## Notes` | | `## Performance Considerations` | Merge into `## Notes` | | `## Troubleshooting` | Merge into `## Notes` | | `## System Configuration Example` | Move into `## Configuration` | | Standalone concept sections (e.g., `## JSONPath Support`) | Move under `## Configuration` | ## Validation Checklist Before finishing: - The doc exists at `docs/<policy-name>/v0.1/docs/<policy-name>.md`. - `docs/<policy-name>/v0.1/metadata.json` exists and matches the required structure. - `policies/<policy-name>/policy-definition.yaml` and relevant implementation files were reviewed before writing/updating documentation. - For migrations, original `Features`, existing `Configuration` tables, and sample YAMLs were preserved unless implementation changes required updates. - Markdown includes all required sections and no extra top-level sections. - `Configuration` includes the mandatory `build.yaml` policy entry snippet under `policies:`. - `System Parameters (From/Comes from config.toml)` is included only when system-level parameters exist. - For migrations, `## Notes` preserves all useful guidance merged from best-practice/security/performance/troubleshooting sections.
GitHub에서 보기