基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/axonivy-market/skillset-for-documentation --skill ivy-readme-assemble命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Generate docs listings for Axon Ivy CALLABLE_SUB process files with all CallSubStart entries, including signature, parameter, and result details. Use when process JSON changes and docs need refresh.
give me a marketing summary. what features can I expect from these callable subs?.
Use when asked for a detailed summary, listing, or overview of form components in the project.
| name | ivy-readme-assemble |
| description | Assemble final README from precomputed fragments and write to target path. |
| argument-hint | <target-readme-path> |
| user-invocable | true |
Assemble README from fragment inputs without recomputation.
targetReadme (required): output pathfragments (required): precomputed markdown fragmentstemplateRef (optional): template/schema pathstyleProfile (optional): formatting profile inferred from repository docssuccess or partial: inject content verbatim.partial and content is synthesized, inject the content with a note indicating it was auto-generated.missing or content is empty: keep section heading and inject a bullet-prefixed fallback line. Default fallback: - No information was delivered for this section.
## Components, emit targeted bullet sentences instead of the generic fallback. Use these exact sentences:
- For this market extension we do not provide any callable subprocesses.- For this market extension we do not provide any dialog components.- For this market extension we do not provide any rest clients.- For this market extension we do not provide any web services.- For this market extension we do not provide any maven artifacts.### Rest Clients only from restClientsSection (extracted from config/rest-clients.yaml). Do not treat openApiSection as Rest Clients evidence.### Web Services only from webServicesSection (extracted from config/webservice-clients.yaml). Do not treat openApiSection as Web Services evidence.missing with the default fallback.requiredSubsections is provided, verify each subsection appears in content; for missing entries, append explicit placeholder lines under the correct section.preserveMode=verbatim, do not rewrap, renumber, or normalize markdown blocks.preserveMode!=verbatim, normalize ordered-list sequence before injection:
1. items).1., 2., 3. and nested steps stay nested.styleProfile and inject into the repository-native heading without changing the fragment content.Demo section: Inject demoIntroSection directly under ## Demo. Always render heading ### Demo Workflows after demoIntroSection, then inject demoWorkflows fragment content (or fallback if missing).
Setup section: Assemble in order: Roles → OpenAPI → Variables block reference → [Setup steps].
Roles placement: Insert as bullet point at start of Setup section (before steps): - **Roles:** ...
OpenAPI placement: Insert as bullet point WITHIN Setup section (not separate ## Components section): - **OpenAPI:** Spec URL
openApiSection is missing or empty, render exactly: - **OpenAPI:** No information was delivered for this section.### Rest Clients from restClientsSection content (extracted from config/rest-clients.yaml). This mapping is canonical and must be applied consistently across models.Canonical Web Services mapping (mandatory): render ### Web Services from webServicesSection content (extracted from config/webservice-clients.yaml). This mapping is canonical and must be applied consistently across models.
Variables placement: Inject under ## Setup as ### Variables subsection (not standalone section) unless style profile explicitly requests standalone.
Image placement: If an image fragment is present with standalone=false, place image snippets in the target sections indicated by fragment placement hints (for example intro/demo/setup). If productImageSection status is missing or empty, do NOT create a standalone ## Images section. Instead, skip image section entirely. All images must be embedded within their related content sections (Setup, Demo, etc.).
Image embedding algorithm (required, step-aware for per-workflow demo images):
Algorithm Overview: For each image in :
If an image has placement: demo:workflow-Document Splitting, assembler must find the ##### Document Splitting workflow block in the Demo section and insert the image after the numbered steps for that workflow.
If an image has placement: demo:workflow-Document Splitting:step-2, assembler must insert the image directly below step 2. in that workflow.
## Images section under any circumstances unless the template or fragment explicitly sets standalone=true. When productImageSection is missing/empty, simply omit the entire Images section from output — do not insert a fallback placeholder like "No images detected".## Components and place ### Callable Subprocesses, ### Dialog Components, ### Rest Clients, ### Web Services, and ### Maven Artifacts beneath it.## Callable Subprocesses as top-level heading.### Variables, if variablesSection is missing/empty, do not inject fallback text.### Demo Workflows after demoIntroSection, even if the demoWorkflows fragment is missing or empty.<!-- status: ... -->) from fragment content before injection. Never include timestamps, skill names, or other metadata in the final output.@variables.yaml@ if present.styleProfile when present to keep repository-native markdown conventions (ordered list style, OpenAPI style, callable-sub layout).
6.1 Prefer repository-native section placement when style profile indicates it (e.g., variables inside setup).# ...) should exist. If duplicate full-document starts are found, rewrite the file once with the same assembled content.restClientsSection and webServicesSection must be validated independently from openApiSection; OpenAPI setup evidence does not satisfy Components coverage.missing and rendered with explicit fallback text.### Callable Subprocesses from callableSubSection, ### Dialog Components from formComponentSection, ### Rest Clients from restClientsSection, ### Web Services from webServicesSection, ### Maven Artifacts from mavenArtifactSection)README.md during assembly.productImageSection.images[]image.placement (e.g., demo:workflow-Person Search:step-2)Placement Types & Embedding Logic:
Type 1: demo:workflow-<WorkflowName>:step-<N> (highest priority)
Goal: Insert image directly below numbered step N in specific workflow
Algorithm:
1. Parse placement → WorkflowName="Document Splitting", StepNumber=2
2. Scan Demo section for workflow heading: ##### Document Splitting
3. Within that workflow block, find step 2 line (e.g., "2. Upload or select a document...")
4. Insert image after step 2:
- Add blank line after step 2
- Insert image snippet: ""
- Add blank line after image
5. Adjust indentation to match workflow step indentation (3 spaces)
Example input (GENERIC - any workflow):
```markdown
##### Document Splitting
1. Launch the Document Splitting demo from the demo menu.
2. Upload or select a document from the file browser.
3. Configure splitting parameters (page range, orientation).
4. Review the split result and download the files.
Example output (image inserted after step 2):
##### Document Splitting
1. Launch the Document Splitting demo from the demo menu.
2. Upload or select a document from the file browser.

3. Configure splitting parameters (page range, orientation).
4. Review the split result and download the files.
Note: This applies to ANY workflow - replace "Document Splitting" with your workflow name
**Type 2: `demo:workflow-<WorkflowName>`** (workflow-level, no step)
Goal: Insert image after all workflow steps (end of workflow block)
Algorithm:
Example (works for any workflow):

**Type 3: `intro`**
Goal: Insert image after first paragraph of product description
Algorithm:
**Type 4: `demo`** (fallback without workflow match)
Goal: Insert image under ## Demo before ### Demo Workflows
Algorithm: 1. Locate ## Demo section heading 2. Find ### Demo Workflows subheading 3. Insert image between them
**Type 5: `setup`**
Goal: Insert image inside ## Setup near related step or config
**Workflow Name Matching (Robust & Fuzzy - GENERIC):**
Step 1: Normalize both sides - image placement: WorkflowName = "Document Splitting" → "document splitting" - readme heading: "##### Document Splitting" → "document splitting" - Rules: lowercase, remove punctuation, collapse whitespace
Step 2: Compare normalized forms - Exact match: if normalized_placement == normalized_heading → use it - Substring match: if one is substring of other → use it - Token match: if all tokens from one appear in other → use it - Score-based: if multiple matches, pick highest scoring match
Step 3: If no match found - Log warning: "Image placement 'demo:workflow-X' did not match any heading" - Fallback: insert image under ## Demo before ### Demo Workflows
WORKS FOR ANY WORKFLOW - Examples: - "Document Splitting" ↔ "DocumentSplitting.png" - "Data Validation" ↔ "DataValidation.png" - "Invoice Processing" ↔ "InvoiceProcessing.png"
**Step Number Extraction & Matching (GENERIC):**
Goal: Find exact line number in workflow to insert image
Algorithm: 1. Extract all numbered lines from workflow block (pattern: "1. ", "2. ", "3. ", etc.) 2. Match pattern: "^N. " (e.g., "2. " for step 2) 3. Find insertion point: - Start from step line (e.g., "2. Select configuration options...") - Scan forward until next numbered line (e.g., "3. Review...") - OR end of workflow block 4. Insert image at that position with blank line before & after
Works for ANY workflow - Examples: - Step 1: "1. Launch the demo..." - Step 2: "2. Configure settings..." - Step 3: "3. Execute the workflow..."
**Pseudo-code for step insertion (GENERIC - works for any workflow):**
```javascript
function insertImageAfterStep(workflowBlock, stepNum, imageSnippet) {
lines = workflowBlock.split('\n')
// Find step N line (pattern: "N. " at start of line)
for (i = 0; i < lines.length; i++) {
if (lines[i].match(new RegExp('^' + stepNum + '\\. '))) {
stepLineIndex = i
break
}
}
if (stepLineIndex == null) return null // step not found
// Find insertion point (after step content, before step N+1)
insertionIndex = stepLineIndex + 1
for (i = stepLineIndex + 1; i < lines.length; i++) {
if (lines[i].match(new RegExp('^' + (stepNum + 1) + '\\. '))) {
insertionIndex = i
break
}
}
// Insert image with blank lines
lines.splice(insertionIndex, 0, '', imageSnippet, '')
return lines.join('\n')
}
// WORKS FOR ANY PROJECT - example calls:
// - insertImageAfterStep(docSplittingBlock, 2, "")
// - insertImageAfterStep(invoiceBlock, 1, "")
// - insertImageAfterStep(validationBlock, 3, "")
Indentation Rules:
- Workflow step line: "1. ..." (0 indent)
- Image after step: "![...]()" (no forced indent)
- Blank line: "" (empty)
Example indentation:
1. Step one
2. Step two

3. Step three
Complete Example (Full Flow - GENERIC):
Input Fragment:
{
"section": "productImageSection",
"images": [
{
"path": "images/DocumentSplitting.png",
"placement": "demo:workflow-Document Splitting:step-2"
}
]
}
README Content (before):
### Demo Workflows
#### my-demo-module (any demo module)
##### Document Splitting
1. Launch the Document Splitting demo
2. Upload a document or select from library
3. Configure splitting parameters
4. Review and download results
README Content (after):
### Demo Workflows
#### my-demo-module
##### Document Splitting
1. Launch the Document Splitting demo
2. Upload a document or select from library

3. Configure splitting parameters
4. Review and download results
WORKS FOR ANY PROJECT - Just replace:
- "Document Splitting" with your workflow name
- "DocumentSplitting.png" with your image filename
- Step 2 with your target step number
Error Handling:
- If step number not found: log warning, insert after last step instead
- If workflow not found: log warning, insert under ## Demo fallback
- If image path invalid: skip image, log error
- If placement malformed: default to "demo" placement
images[] per-image placement hints when available. For each image in order:
placement is demo:workflow-<WorkflowName>, find the workflow block in the Demo section with heading matching <WorkflowName> and insert the image snippet immediately after the step list for that workflow.placement is demo:workflow-<WorkflowName>:step-<N>, find the workflow block and insert the image snippet directly below numbered step N (same indentation level as workflow step attachments).<WorkflowName> from the placement value and each demo workflow heading using the same rules: lowercase, remove punctuation (quotes, parentheses), collapse repeated whitespace, replace common punctuation with spaces, and trim. Compare normalized forms for equality; if no exact equality, then try substring match of token sequences (longest-first). This relaxed matching makes placements resilient to minor differences in punctuation, quoting, or diacritics.placement is intro, insert after the first paragraph of productDescriptionSection.placement is demo, insert under ## Demo before ### Demo Workflows (or close to the Demo section if no workflows exist).placement is setup, insert within ## Setup near the related step or at top of ### Variables if the image documents configuration.productDescriptionSection, Demo, Setup). When falling back from demo:workflow-..., prefer inserting under ## Demo before ### Demo Workflows.standalone=true, create ## Images and place any images without explicit placements there; otherwise do not create ## Images...), or unresolved, skip insertion of that image snippet.