소스 정보
- 저장소
- microsoft/github-copilot-modernization
- 최근 소스 활동
- 2026년 7월 17일 03:11
- 감지된 SKILL.md 언어
- 영어
- 스타
- 40
- 포크
- 12
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/microsoft/github-copilot-modernization --skill api-service-contracts명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Convert an arbitrary CSV report (e.g. a Black Duck export or a custom migration-issue inventory) into a schema-valid assessment `report.json` the modernization pipeline can consume — so it appears in the assessment UI and migration solutions resolve automatically. This skill is LLM-driven: you read and interpret the CSV yourself and author `report.json` by hand against the schema. A small helper script only does deterministic lookups (migration solutions, the ruleId for a solution) and validates the finished report. There is NO "convert everything" script and NO assumed column layout. Triggers: "convert csv to assessment report", "import csv report", "turn this spreadsheet into a report.json", "Black Duck csv to report", "build report.json from csv", "migrate a third-party assessment export". NOT for: AppCAT-style analysis from source (use `assessment`), generating a modernization plan (use `create-modernization-plan`), or editing a report.json the pipeline already produced.
Create a modernization plan to migrate the project to Azure
Create a test baseline for the project to be modernized. The baseline will be used for later verification of modernization tasks.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | api-service-contracts |
| description | Generate API and service communication contracts with sequence diagram |
Analyze the project to document all services, API endpoints, communication patterns (sync/async), DTOs, and retry/circuit-breaker policies. Generate a Mermaid sequence diagram showing the primary request flow across services. Save to .github/modernize/assessment/engines/facts/api-service-contracts.md.
workspace-path (optional): Path to the project to analyze (defaults to current directory)Mermaid sequenceDiagram is unforgiving in a few specific ways: one bad alias or one missing end crashes the whole diagram with Syntax error in text, not just the offending line. Stay strictly inside this subset for the sequence diagram in Step 7:
Chart kind. sequenceDiagram only. Never sequence-diagram, never sequence.
Participants. Always declare with the alias form participant <AlphaNumId> as "Display Label". The id must match [A-Za-z][A-Za-z0-9_]*. Never omit the id — even a one-word participant should be participant Client as "Client". This is the single biggest cause of past failures.
Arrows.
->> synchronous request-->> synchronous response (or async return)-) async fire-and-forget: and is plain text — keep it short and on one line.Blocks. alt / else / opt / loop / par / critical MUST be closed by end on its own line. Every open block must have a matching end. Missing end is the #2 cause of past failures.
No line breaks anywhere. The escape \n was removed in modern Mermaid. Aliases, message text, and Note over content must all be single-line. Split a long note into multiple consecutive Note over lines; split a long message into multiple arrows. This is the #1 cause of past failures.
Banned characters inside participant aliases specifically (message text is more permissive — only \n is banned there):
| Banned in alias | Why it breaks | Replacement |
|---|---|---|
\n (literal two chars) | escape removed | drop |
" (a second double-quote) | closes the alias early | ' (single quote) |
` (backtick) | breaks alias quoting | drop |
smart quotes " " ' ' | not ASCII | regular " and ' |
: | confuses with message delimiter | rephrase, e.g. "REST API (port 8080)" not "REST API: port 8080" |
<br/> | not interpreted inside aliases | rephrase as shorter alias |
Quote the alias. participant Svc as "Order Service" — never participant Svc as Order Service (unquoted multi-word aliases break).
Immediately before writing the ```mermaid opening fence in Step 7, emit this exact one-line HTML comment in the markdown (it does not render — it is for your own visible attestation):
<!-- mermaid-checked: every participant uses `participant Id as "Label"`, no \n in aliases/messages/notes, every alt/opt/loop closed by end, no `:` inside any alias -->
If you cannot truthfully emit that comment, fix the diagram first.
This skill is part of a set of four complementary assessment skills. To avoid content duplication across their output documents, observe these scope rules:
data-architecture skill. In the DTOs & Contracts section, list entity/DTO class names and their role in the API contract (request type, response type, immutability). Do NOT reproduce full field lists, ORM annotations (cascade, fetch strategy), or table names — reference data-architecture.md instead.@NotBlank, custom validators) are owned by the business-workflows skill. Mention validation only when it affects the API contract (e.g., "returns 400 if validation fails"). Do NOT enumerate individual field constraints.data-architecture skill. In the sequence diagram, you may show cache hit/miss behavior, but do NOT repeat the cache provider name, configuration details, or rationale.spring.jpa.*, database profiles) are owned by the configuration-inventory skill. Do NOT list property keys/values.configuration-inventory skill. Mention startup order only if it directly affects API availability. Do NOT repeat probe paths or wait mechanisms.Identify all independently deployable services/modules and produce the complete ## Service Catalog section:
pom.xml <modules>), Gradle subprojects (settings.gradle), .NET solutions (.sln → .csproj projects), monorepo workspaces (package.json workspaces)docker-compose.yml service definitions) — note third-party containers vs source-built servicesFor each service extract:
docker-compose.yml, or application.properties/appsettings.json)pom.xml, .csproj, package.json)Scan source code for API endpoint definitions and produce the complete ## API Endpoints Inventory section:
@RestController, @Controller, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @RequestMapping@Path, @GET, @POST, @PUT, @DELETE (JAX-RS)[ApiController], [HttpGet], [HttpPost], [HttpPut], [HttpDelete], [Route]app.get, app.post, router.get), Fastify routes, NestJS decorators (@Get, @Post)For each endpoint extract:
Identify management and observability endpoints and produce the complete ## Management & Observability Endpoints section:
/actuator/health, /actuator/info, /actuator/metrics, /actuator/prometheus)/health, /healthz), Swagger UI (/swagger)@Timed (Micrometer), [Meter], custom metric registrations — note the metric name and which service exposes itAnalyze DTO and contract definitions and produce the complete ## DTOs & Contracts section:
data-architecture.md.@Value, Java records, C# records, frozen data classes)openapi.yaml, swagger.json, Springdoc/Swashbuckle annotations).proto files) or GraphQL schemasIdentify inter-service and intra-service communication and produce the complete ## Communication Patterns section:
configuration-inventory.md.@PreAuthorize, role checks) are implemented at the API level. If absent, state it explicitly — e.g., "No authentication or TLS configured; all endpoints are publicly accessible with no authorization checks." Do NOT duplicate CWE security scan findings; focus only on presence or absence at the API contract level.For each service, identify which cross-cutting capabilities it uses and produce the complete ## Service Technology Matrix section:
Create a Mermaid sequenceDiagram and produce the complete ## Service Communication Sequence section (re-read the Safety Constraints above before writing):
Reference example (this block satisfies every Safety Constraint — match its shape):
sequenceDiagram
participant Client as "Client"
participant Gateway as "API Gateway"
participant CustSvc as "Customers Service"
participant VisitSvc as "Visits Service"
participant DB as "Database"
Client->>Gateway: GET /api/gateway/owners/1
Gateway->>CustSvc: GET /owners/1
CustSvc->>DB: findById(1)
DB-->>CustSvc: Owner + Pets
CustSvc-->>Gateway: OwnerDetails(pets=[Pet1,Pet2])
Gateway->>VisitSvc: GET /pets/visits?petId=1,2
alt Visits Service Available
VisitSvc->>DB: findByPetIdIn([1,2])
DB-->>VisitSvc: Visits list
VisitSvc-->>Gateway: Visits(items=[...])
else Circuit Breaker Open
Gateway-->>Gateway: Fallback - empty visits
end
Gateway->>Gateway: Merge visits into pets
Gateway-->>Client: 200 OwnerDetails + Visits
Save to .github/modernize/assessment/engines/facts/api-service-contracts.md with this exact structure:
# API & Service Communication Contracts
A brief introduction (1-2 sentences) summarizing the API surface and communication patterns found.
## Service Catalog
[Table: Service | Port | Category | Purpose]
## API Endpoints Inventory
[Table: Service | Method | Path | Request Type | Response Type]
## Management & Observability Endpoints
[Table: Service | Endpoint | Custom Metrics (if any)]
## DTOs & Contracts
[Description of gateway-level DTOs vs service-level entities, immutability, serialization]
## Communication Patterns
[Description of sync/async patterns, gateway aggregation/composition logic, circuit breaker/retry policies with timeout values, service discovery, startup dependency chain, and security posture (authentication/authorization/TLS — or explicit statement that none is configured)]
## Service Technology Matrix
[Table: Service | Web | Data Access | Discovery | Gateway | Actuator | Cache | Metrics]
## Service Communication Sequence
< Mermaid sequenceDiagram here >
Each row below is something the model actually produced that crashed the diagram. Use the ✅ form.
| ❌ Past mistake | ✅ Safe form | Why the ❌ crashed |
|---|---|---|
participant API (no alias) | participant API as "API" | Bare participants with later spaces in usage break |
participant API as "REST API\n(SubsonicController)" | participant API as "REST API (SubsonicController)" | Literal \n in alias |
participant API as "REST API: port 8080" | participant API as "REST API (port 8080)" | : in alias collides with message delimiter |
Note over Client,API: First fact\nSecond fact | Two consecutive Note over Client,API: ... lines | \n in note text |
alt happy path ... missing end | alt happy path ... end | Unclosed block |
participant Svc as Order Service (no quotes) | participant Svc as "Order Service" | Multi-word alias must be quoted |
> ERROR: Unsupported project type. This skill supports Java, .NET, JavaScript, and TypeScript projects only.> ERROR: No recognized API endpoints found at workspace-path. Verify the path is correct.> Note: Some endpoints or communication patterns could not be fully identified.<!-- mermaid-checked: ... --> attestation comment.github/modernize/assessment/engines/facts/api-service-contracts.md