Feasibility
MicrosoftOfficialPublished by Microsoft
- Skill
- Workflow
- Software development
- CC-BY-4.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The feasibility skill provides a structured approach to assessing the viability of data and machine learning projects. It enforces a rigorous, machine-readable format using a constrained YAML block embedded within a Markdown document. By utilizing UUID-based identity, lifecycle lineage, and explicit evidence traceability, the skill ensures that feasibility studies remain durable, auditable, and ready for downstream consumption by product planning processes. It includes validation scripts to ensure structural and semantic integrity, as well as a mechanism to generate a handoff artifact for PRD authoring.
What it does
- Defines a structured format for feasibility studies using Markdown and constrained YAML.
- Enforces identity management using UUID URNs for concepts, revisions, and relations.
- Supports lifecycle tracking, including lineage for splits, merges, and supersessions.
- Provides validation tools to check structural integrity and semantic closure.
- Generates a formal handoff artifact for transitioning findings into PRD authoring.
- Maintains clear separation between machine-readable facts and narrative evidence.
When to use it
- When assessing whether technical evidence and data support a proposed project outcome.
- When you need to maintain a durable, auditable record of feasibility decisions.
- When preparing to hand off validated findings to a product requirements process.
- When you need to track the lineage and provenance of feasibility evidence over time.
Advantages
- Ensures consistency and machine-readability across all feasibility studies.
- Provides clear traceability from evidence to conclusions.
- Prevents ambiguity by requiring explicit status and criteria definitions.
- Facilitates reliable downstream integration with product planning workflows.
- Maintains a clear audit trail for decisions and revisions.
Usage examples
- “Initialize a new feasibility study for the proposed data ingestion pipeline.”
- The agent creates a new Markdown file using the feasibility template, ready for the user to define the study scope and allocate initial UUIDs.
- “Validate the current feasibility study and generate the PRD handoff.”
- The agent runs the validation script to check the YAML block and lineage, then generates the required handoff file if the study is in a Recommend state.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/feasibility/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip feasibility.zip -d .agents/skills
Documentation by Microsoft
Data and ML Feasibility Workflow
Goal
Produce one durable Markdown feasibility study that remains useful to people and can be consumed later by a Functional Planner. One constrained YAML block owns machine facts; narrative sections preserve evidence, interpretation, and context.
Flow
Confirm the proposed outcome, decision boundary, study scope, and durable output path.
Allocate UUIDv4 URNs for the study concept, study revision, each item concept, each item revision, and each relation. Never derive identity from a title, class, path, or content.
Capture candidate capabilities, constraints, assumptions, findings, risks, dependencies, decisions, evidence, gaps, and non-goals. Preserve uncertainty and source-authored criteria without promoting every item to a requirement.
Record lifecycle and provenance. Reclassification keeps conceptual identity and creates a new revision. Split, merge, derivation, withdrawal, and supersession retain explicit lineage.
Write or update the single named
FEASIBILITY-STUDY-INTERCHANGEYAML block. Narrative can explain machine facts but cannot redefine them.Validate constrained YAML, JSON Schema 2020-12 structure, semantic closure, revision lineage, tombstones, and narrative anchors with
scripts/validate_feasibility.py.Present the recommendation and unresolved review gaps. Preserve the study as read-only evidence for downstream consumers.
After the study is final, emit the sibling feasibility-to-PRD handoff described in feasibility-to-prd-handoff.md. Regenerate it after any material study revision, then validate both artifacts with
scripts/validate_feasibility.py <study.md> --handoff <handoff.yml>.
Inputs
Problem definition, desired outcome, and decision the study must support
Data access, discovery, architecture, exploration, preprocessing, and experiment evidence
Source-authored acceptance criteria, when known
Risk, privacy, Responsible AI, performance, and operational evidence
Prior study revision and item identity registry, when revising an existing study
Success criteria
Exactly one named constrained YAML block declares
profile: feasibility-study-interchangeandprofile_version: 1.0.0.Study, item, relation, and revision IDs are RFC 9562 UUID URNs. Conceptual and revision IDs are unique and never reused.
Item class, status, alias, planning relevance, relations, provenance, confidence, review, and location remain separate fields.
Revision lineage is closed and acyclic. Current revisions appear in the revision registry.
Withdrawn and superseded items remain as complete tombstones. Split, merge, supersession, and derivation targets resolve.
Every item has one matching narrative anchor, and narrative has no unknown item anchor.
Missing criteria remain explicit. The workflow does not invent acceptance criteria.
Each confirmed Recommend exit produces a handoff carrying the verdict, evidence, constraints, gaps, and the
study_revision_idit was generated from.
Constraints
The study does not assign
FR-###orNFR-###.display_refuses the study-local, type-neutralFS-###alias only.The study's constrained YAML block remains the authority for every machine fact. The handoff is a derived summary that never redefines a study fact; a disagreement resolves in favor of the study.
The handoff carries no version constant and no content hash. Recognition uses
kind, and freshness is judged fromstudy_revision_id.Downstream Functional Planner adoption is a separate workstream. This package does not claim current direct compatibility with Functional Planner.
Downstream consumers remain read-only toward the study. They own their UUID-to-requirement mapping and traceability views.
Do not claim SpecIF, OSLC RM, ReqIF, PROV, DCMI, or JSON-LD conformance. The profile maps selected concepts without implementing those complete standards.
Keep YAML JSON-compatible: string keys, JSON scalar values, arrays, and objects only. Do not use aliases, anchors, merge keys, custom tags, timestamps as native YAML objects, or ordering-dependent meaning.
Stop rules
Stop at a hard decision boundary when the problem or desired outcome remains ambiguous.
Stop and record
needs_reviewwhen criteria, evidence, lifecycle disposition, or relation meaning cannot be established from sources.Stop before changing a conceptual ID because a title, class, status, alias, or location changed. Create a new revision instead.
Stop before deleting a withdrawn or superseded concept. Retain a tombstone with reason, effective time, last revision, and explicit successor state.
Stop before any downstream writeback to the study. Record mappings in downstream-owned artifacts.
Package resources
| Resource | Use |
|---|---|
| interchange-profile.md | Read for authority, constrained YAML, identity, lifecycle, compatibility, and producer rules |
| standards-crosswalk.md | Read for SpecIF, OSLC RM, PROV, and DCMI mappings and non-conformance boundaries |
| provenance.md | Read for source licensing, attribution, and profile independence |
| feasibility-to-prd-handoff.md | Read for the sibling handoff's emission trigger, field set, verdict presence rules, and regeneration obligation |
| feasibility-study.md | Copy when starting a study |
| valid-study.md | Read as a valid profile fixture with revision, evidence, and dependency relations |
assets/feasibility-study-interchange-1.0.0.schema.json | Use as the local structural JSON Schema 2020-12 profile |
assets/feasibility-to-prd-handoff.schema.json | Use through the validator for handoff shape, verdict presence rules, and vocabulary |
scripts/validate_feasibility.py | Execute with uv run python scripts/validate_feasibility.py <study.md> [--handoff <handoff.yml>] before publishing a revision or handoff |
Attribution
The Feasibility Study Interchange Profile, schema, template, examples, and validator are independently authored repository content licensed CC BY 4.0.
Selected concepts are mapped to open specifications for interoperability vocabulary only. No upstream schema, example, or substantial prose is reproduced. See provenance.md.
Files
- ATTRIBUTION.mdAdded by AutoGineer973 B
- LICENSEAdded by AutoGineer16.6 KiB
- SKILL.md8.2 KiB
- assets/feasibility-study-interchange-1.0.0.schema.json5.9 KiB
- assets/feasibility-to-prd-handoff.schema.json3.4 KiB
- examples/invalid-fixtures.md1.6 KiB
- examples/valid-study.md5.3 KiB
- pyproject.toml701 B
- references/feasibility-to-prd-handoff.md9.9 KiB
- references/interchange-profile.md7.3 KiB
- references/provenance.md2.9 KiB
- references/standards-crosswalk.md3.9 KiB
- scripts/validate_feasibility.pyScript25.1 KiB
- templates/feasibility-study.md2.6 KiB
- tests/corpus/0_valid_profile130 B
- tests/corpus/1_anchor_alias143 B
- tests/corpus/2_duplicate_key129 B
- tests/corpus/3_unterminated_block66 B
- tests/corpus/4_no_block26 B
- tests/corpus/README.md1.3 KiB
- tests/fuzz_harness.pyScript1.2 KiB
- tests/test_validate_feasibility.pyScript24.5 KiB
- uv.lock107.7 KiB
references/interchange-profile.md
title: Feasibility Study Interchange Profile 1.0.0 description: Authoritative constrained YAML, identity, lifecycle, traceability, compatibility, and producer rules
Profile identity
The profile identifier is feasibility-study-interchange; the supported version is 1.0.0. It is an independently authored application profile for one durable Markdown study. It does not create a temporary handoff payload.
Consumers reject unsupported profile versions. Additive optional fields require a reviewed profile revision because the schema rejects unknown properties. Breaking field, enum, or semantic changes require a new major profile version.
One machine-fact authority
The Markdown study contains exactly one block between these markers:
<!-- BEGIN FEASIBILITY-STUDY-INTERCHANGE -->
```yaml
profile: feasibility-study-interchange
...<!-- END FEASIBILITY-STUDY-INTERCHANGE -->
The parsed YAML projection is authoritative for identity, revision, class, status, alias, planning relevance, relations, provenance, confidence, review, location, timestamps, and criteria state. Narrative supplies explanation and evidence interpretation. When prose conflicts with the block, correct the prose or make an explicit machine-fact revision.
## Constrained YAML
The block uses the JSON-compatible subset of YAML 1.2:
* String mapping keys with no duplicates
* Strings, numbers, booleans, `null`, arrays, and objects
* Quoted RFC 3339 timestamps so parsers retain strings
* No anchors, aliases, merge keys, custom tags, binary values, sets, or ordering-dependent meaning
The local JSON Schema validates the parsed object. The semantic validator adds rules JSON Schema cannot express.
## Identity
Use UUIDv4 by default and serialize every identifier as lowercase `urn:uuid:<uuid>`. Conceptual IDs and revision IDs have different jobs:
| Field | Purpose |
|---------------------|-------------------------------------------------------------|
| `study_id` | Enduring study concept identity |
| `study_revision_id` | Immutable identity of the current published study snapshot |
| `item_id` | Enduring feasibility-item concept identity |
| `item_revision_id` | Immutable identity of the current item snapshot |
| `relation_id` | Stable identity of one typed relation assertion |
| `display_ref` | Study-local `FS-###` review alias, never a primary identity |
| `location` | Mutable file-and-anchor locator |
Never derive UUIDv5 identity from paths, titles, classes, or content. File moves, heading changes, reclassification, alias corrections, and status changes do not change a concept ID. Authoritative changes create a new revision ID.
The `revision_registry` retains every published study and item revision. Revision IDs are globally unique, each `revision_of` target resolves within the same concept, and lineage is acyclic. Current revision IDs must be present in the registry.
## Item classes and planning relevance
Classes preserve feasibility uncertainty:
* `capability-candidate`
* `constraint`
* `assumption`
* `finding`
* `risk`
* `dependency`
* `decision`
* `evidence`
* `gap`
* `non-goal`
`planning_relevance` is separate and can be `candidate`, `context`, or `not-applicable`. A downstream planner can select capability candidates without treating every finding or risk as a work item.
Criteria state is explicit: `defined`, `partial`, `not-yet-defined`, or `not-applicable`. Empty criteria are valid only for the last two states. Producers do not infer missing criteria.
## Relations
Relations are separate records so rationale, confidence, provenance, and review state travel with the edge. Supported relation types are:
* `depends-on`, `constrains`, `satisfies`, `implements`, and `validates`
* `evidenced-by`
* `supersedes`
* `split-from` and `merged-from`
* `derived-from`
* `related-to`
Targets are conceptual item IDs. Relation meanings map to OSLC RM only when exact; profile-owned types remain profile-owned. Document hierarchy and tracker parenting are not encoded as semantic relations.
## Provenance
Study and item provenance keeps:
* `attributed_to`: a human or organizational actor label
* `source_refs`: durable source paths, URLs, or evidence identifiers
* `generated_at`: timestamp of the recorded assertion
Evidence items are ordinary typed items. `evidence_refs` point to item IDs whose class is `evidence`. `derived-from` relations and provenance source references preserve derivation without implying truth or approval.
## Lifecycle
| Event | Required behavior |
|------------------|-------------------------------------------------------------------------------------------------------------------------------------|
| Revision | Keep conceptual ID, allocate a new revision ID, and link it through `revision_of` and the registry |
| Reclassification | Keep conceptual ID and alias; allocate a new revision ID |
| Move | Update `location`; identity remains unchanged |
| Split | Allocate new concept IDs with `split-from` relations; retain the source as active or a complete superseded tombstone |
| Merge | Allocate a new concept ID by default with multiple `merged-from` relations; retain source tombstones |
| Derivation | Allocate a new concept ID and use `derived-from`; preserve source study and item identity |
| Withdrawal | Keep the concept and revisions; require reason, effective time, and an explicit empty or populated successor list |
| Supersession | Keep the old concept; require reason, effective time, and at least one successor; successor records the predecessor where practical |
`active`, `proposed`, `accepted`, and `rejected` records can have a null lifecycle reason and empty predecessor or successor lists. `withdrawn` and `superseded` records require complete tombstone fields. IDs are never reused.
## Narrative anchors
Every item declares `narrative_anchor` equal to the lowercase display reference, for example `fs-001`. The Markdown body has exactly one level-three heading beginning with the display reference, such as `### FS-001: Confirm source access`. The validator rejects missing, duplicate, and unknown item headings.
## Producer validation
Run validation before publishing each revision:
1. Extract exactly one named block.
2. Reject prohibited YAML constructs and duplicate keys.
3. Parse to JSON-compatible values and validate against the local 2020-12 schema.
4. Validate conceptual and revision ID uniqueness, registry closure, and acyclic revision lineage.
5. Validate relation and evidence closure, class compatibility, split and merge lineage, and tombstone completeness.
6. Validate criteria-state consistency and narrative-anchor correspondence.
A structurally valid study still requires human review of evidence truth, recommendation quality, privacy, and authorization.
Requirements and compatibility
Written for: GitHub Copilot, Claude Code
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Claude Code frontmatter, Needs Python
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/hve-core · .github/skills/data-science-engineering/feasibility · commit f425e94
- Licence
- Creative Commons Attribution 4.0 International (redistribution allowed)
- LICENSE (written by AutoGineer)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download feasibility.zip