소스 정보
- 저장소
- axonivy-market/skillset-for-documentation
- 최근 소스 활동
- 2026년 7월 31일 08:53
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/axonivy-market/skillset-for-documentation --skill ivy-readme-assemble명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
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.
SOC 직업 분류 기준
SKILL.md 표시 중
| 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.