원클릭으로
doc-update
Update or create documentation for a specific action or reusable workflow based on git diff and action.yml
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Update or create documentation for a specific action or reusable workflow based on git diff and action.yml
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Navigation-only skill for individual actions in netcracker/qubership-workflow-hub. Use when a workflow needs to consume a specific Qubership action (Docker build/push, version/tag rendering, Maven/npm/Python publishing, package cleanup, Helm charts, security scans, etc.) and you need to find the right action and read its authoritative README. All rules (pinning, permissions, anti-hallucination, naming) live in qubership-workflow-conventions — this skill does not restate them.
Markdownlint ruleset from super-linter. Apply when writing or editing any .md file.
Single source of truth for Qubership GitHub Actions workflows. Use when designing, writing, reviewing, or debugging .github/workflows/*.yml that consume actions or templates from netcracker/qubership-workflow-hub or Netcracker/.github.
Audit GitHub Actions workflow and action.yml files for security issues using zizmor rules, then fix violations
Audit files for EditorConfig violations (final newline, trailing whitespace, indent, line endings) and fix them in-place
Generate a PR title and description following project conventions, then create or update the PR via gh CLI
| name | doc-update |
| description | Update or create documentation for a specific action or reusable workflow based on git diff and action.yml |
| arguments | ["target"] |
Update or create documentation for a GitHub Action or reusable workflow.
$target — action name (e.g. metadata-action) or workflow name (e.g. reusable/docker-publish).
Required unless --all is used.--all — find all changed actions/workflows from the current branch diff and update each.--all → step 1aTARGET = $target (required)Resolve changed files from the current branch relative to the base ref (see step 2 for base ref resolution). Keep only:
actions/*/action.yml, actions/*/action.yaml → action nameactions/*/src/**, actions/*/*.py → action name.github/workflows/re-*.yml, .github/workflows/re-*.yaml → reusable/<name>Extract unique targets. Run steps 2–12 for each. If none found — stop.
Base ref: resolve in priority order:
baseRefName from the open PR for the current branch, if one existsmain as final fallback — warn the user if this fallback is usedCollect the diff of the target scope relative to this base ref.
Release tag: find the most recent semver tag in the repository
(e.g. the latest v* tag by version order). If no tag exists, use v1 as fallback
and note it in the output.
Use RELEASE_TAG in all usage examples. Never use @main or short SHAs.
$target starts with | YML_PATH | DOC_PATH | TYPE |
|---|---|---|---|
reusable/ | .github/workflows/re-<name>.yml or .yaml — check which exists | docs/reusable/<name>.md | workflow |
| anything else | actions/<target>/action.yml or action.yaml — check which exists | actions/<target>/README.md | action |
For both actions and reusable workflows, check .yml first, then .yaml. Use whichever exists.
Collect the diff of <scope> relative to the base ref resolved in step 2:
actions/<target>/YML_PATH resolved in step 3 (.yml or .yaml)→ CHANGED_FILES, FULL_DIFF
If no diff found:
DOC_PATH exists and YML_PATH exists → ask the user: "No diff found.
Resync documentation with the current source file (YML_PATH)?" Wait for confirmation before
continuing.YML_PATH in full.DOC_PATH if it exists.src/index.js, *.py, *.sh).Primary: extract concrete changes from FULL_DIFF:
Map each change to the doc section it affects:
| Change area | Affected sections |
|---|---|
| Input added/removed/modified | ## 📌 Inputs, ## Additional Information |
| Output added/removed/modified | ## 📌 Outputs |
| New required input or secret | ## Usage / ## Usage Example, ## 📌 Secrets |
| Behaviour / logic change | ## How it works, ## Features, ## Notes |
| Breaking change | ## Notes, ## Troubleshooting |
Secondary (only if diff gives no clear section mapping): expand analysis to adjacent sections that may be affected by the change type. Do not expand to unrelated sections.
Composite action checklist — apply only to sections in scope:
if: conditions → document when the step is skippedenv: not inputs: → document how the caller passes them**Deprecated.** and name the replacementDOC_PATH does not exist → CREATE: generate full README from scratch (steps 8–9).DOC_PATH exists → UPDATE: patch only the sections identified in step 6.
Sections not in scope must not be modified. Never do a full rewrite of an existing file.| Section | Rule |
|---|---|
Title # 🚀 Name | From action.yml: name |
| Short description | From action.yml: description |
## Features | Bullet list derived from steps + inputs + logic |
## 📌 Inputs | Table: Name, Description, Required, Default — see Table rules below |
## 📌 Outputs | Table: Name, Description — see Table rules below |
## 📌 Secrets | Workflows only. Table: Name, Description, Required |
## How it works | What the action/workflow produces and what side-effects it has, from the caller's perspective. Include concrete examples (payload shape, output format). Do NOT narrate yml steps line by line. |
## Additional Information | Subsections for non-obvious inputs. For structured inputs (JSON, config objects) always include a concrete example. |
## Usage / ## Usage Example | See Usage template below |
## Notes | Key warnings and tips. Always end with the SHA pin warning. |
## Troubleshooting | Omit if no known issues |
Table rules — Inputs:
Name — backticksDescription — from yml; enrich from code. State conditional behaviour ("Ignored when
checkout is false"). Lead with **Deprecated.** for deprecated inputs.Required — Yes / No. No footnote markers — put conditional logic in Description.Default — literal value from yml in backticks, or -. Code fallbacks go in Description.Table rules — Outputs:
Name — backticksDescription — from yml; enrich from code. State when output is conditionally empty.
Note naming inconsistencies (underscore vs dash).Action (## Usage):
name: Example workflow
on:
workflow_dispatch:
jobs:
example:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@<sha> # vX.Y.Z
- name: Run action
uses: netcracker/qubership-workflow-hub/actions/<target>@<SHA> # RELEASE_TAG
with:
required-input: value
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Reusable workflow (## Usage Example):
jobs:
call-workflow:
uses: netcracker/qubership-workflow-hub/<YML_PATH>@RELEASE_TAG
with:
required-input: value
secrets:
REQUIRED_SECRET: ${{ secrets.REQUIRED_SECRET }}
Resolve the SHA for the pin by looking up the tag in the repository's remote refs. Render the actual SHA into the example; tag as a trailing comment.
If the lookup fails (no network, no remote, tag not found in origin):
<SHA> literally in the example.<!-- TODO: replace <SHA> with the full commit SHA for RELEASE_TAG -->.Notes pin warning (always last in ## Notes):
Pin to a full 40-character commit SHA with the release tag as a trailing comment, e.g.
@<SHA> # RELEASE_TAG. The SHA is the immutable pin; the comment shows which release it points to. Tags alone are mutable. Never use@mainor short SHAs.
These are separate mutations with different risk. Execute only when the condition is met.
Catalog sync (docs/actions-workflows-catalog.md):
DOC_PATH was created (new action/workflow) OR name/description changed
in YML_PATH.| [<target>](../actions/<target>/README.md) | <one-line description> || [<name>](reusable/<name>.md) | <one-line description> |CLAUDE.md count update:
actions/).CLAUDE.md.Before writing any .md file, apply the full ruleset from
.claude/skills/markdown-rules/SKILL.md (all 50 rules) in-memory.
Fix all violations before calling Write or Edit.