Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .agents/skills/oft-spec-driven-development/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,12 @@ If the issue text is unavailable, ask the user for the issue content or a short
- Preserve existing OFT IDs unless the semantics changed.
- When semantics change, revise the item thoughtfully instead of making arbitrary ID churn.
- Keep requirements user-facing and design technical; do not duplicate the same text in both places.
- For source and test coverage tags, use only the covering artifact type on the
left side (for example, `[impl->dsn~name~1]`); let OpenFastTrace generate the
tag item's name. Do not use `>>` forwarding to connect implementation tags
to tests. Instead, make the relevant design item need both `impl` and
`itest`, and have separate implementation and test coverage tags cover that
design item.
- Prefer precise task items over broad epics in changesets.
- Keep comments in code minimal and let naming carry intent, consistent with the quality requirements.
- Avoid adding dependencies unless a documented design decision approves them.
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,19 @@ for portable editor behavior. The first supported request is
`workspace/symbol`; it currently returns no symbols until workspace indexing is
implemented.

### OFT templates

In Markdown and reStructuredText documents, type an `oft-` prefix and select
one of the OpenFastTrace snippets for an architecture, business or technical
constraint, design, feature, quality goal, quality scenario, requirement, or
scenario item. The scenario snippet includes a
Given-When-Then skeleton and a `Covers:` placeholder.

To insert a snippet, type `oft-`, press `Ctrl+Space` to open the completion
list (or wait for it to appear), then select the desired OpenFastTrace snippet.

Snippets are based on the [OFT IntelliJ plugin](https://github.com/itsallcode/openfasttrace-intellij-plugin/blob/main/src/main/resources/liveTemplates/OpenFastTrace.xml).

## Requirements

The extension requires Java 21 or later. It uses `openfasttrace.java.home` when
Expand All @@ -34,10 +47,6 @@ is needed.

## Extension Settings

Include if your extension adds any VS Code settings through the `contributes.configuration` extension point.

For example:

This extension contributes `openfasttrace.java.home`, an absolute path to a
Java 21 or later runtime. Configure it when VS Code cannot find a suitable
runtime through `JAVA_HOME` or `PATH`.
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ sonar {
}

requirementTracing {
inputDirectories = files('doc')
inputDirectories = files('doc', 'extension/src', 'server/src')
reportVerbosity = 'FAILURE_DETAILS'
filteredTags = ['mvp']
filterAcceptsItemsWithoutTag = false
filterAcceptsItemsWithoutTag = true
}

def isNonStable = { String version ->
Expand Down
49 changes: 49 additions & 0 deletions doc/changesets/03-mvp-oft-template-snippets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# 03 MVP OFT Template Snippets

## Goal

Provide a small, immediately useful authoring slice by offering editable OFT
starter templates in the supported specification-document languages.

## Scope

In scope:

* Contribute feature, requirement, scenario, design, architecture, and
constraint snippets for Markdown and reStructuredText.
* Add the template requirement chain to the MVP trace.
* Verify snippet availability and the scenario skeleton in a VS Code
integration test.

Out of scope:

* Parsing, indexing, highlighting, ID completion, and trace execution.

## Design References

* [System Requirements](../system_requirements.md)
* [LSP-first Architecture](../design/architecture.md)
* [Quality Requirements](../design/quality_requirements.md)

## Task List

### Requirements And Design

- [x] Mark the feature, template requirement, and template-insertion scenario as MVP.
- [x] Split template snippets into their own single-scenario design item.
- [x] Add traced implementation and integration-test items for the snippet
contribution, covered by TypeScript source and integration-test tags.

### Implementation

- [x] Add language-native Markdown and reStructuredText snippet assets.
- [x] Register the assets in the extension manifest.

### Verification

- [x] Run the extension compile, lint, unit, and integration tests.
- [x] Run the full Gradle build and the MVP requirements trace.

### Update User Documentation

- [x] Document the templates and their invocation in README.md.
32 changes: 27 additions & 5 deletions doc/design/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,17 +84,31 @@ Covers:
### Editor Presentation
`dsn~editor-presentation~1`

The VS Code adapter contributes snippets for OFT templates, a Markdown
TextMate injection grammar for immediate declaration coloring, and maps LSP
semantic tokens to OFT coverage-tag styling. It preserves the host language of
every document.
The VS Code adapter contributes a Markdown TextMate injection grammar for
immediate declaration coloring and maps LSP semantic tokens to OFT coverage-tag
styling. It preserves the host language of every document.

Tags: backlog

Covers:
- `scn~recognize-and-highlight-oft-content~1`
- `scn~author-an-oft-link~1`

Needs: impl

### OFT Template Snippets
`dsn~oft-template-snippets~1`

The VS Code adapter contributes language-native Markdown and reStructuredText
snippet files for the common OFT artifact templates. The templates are static,
editable starter text and do not require language-server parsing or indexing.

Tags: mvp

Covers:
- `scn~insert-oft-template~1`

Needs: impl, itest

### Trace Command and Plain-Text Report
`dsn~trace-command-and-plain-text-report~1`

Expand All @@ -103,6 +117,8 @@ request with workspace-relative inputs and filters. The server returns a typed
trace report containing status, messages, and source locations. The adapter
renders it in an Output channel and opens locations from report entries.

Tags: backlog

Covers:
- `scn~trace-the-mvp-scope~1`

Expand All @@ -116,6 +132,8 @@ settings. Profiles contain scope, additional paths, artifact-type filters, tag
filters, and output mode. Commands and a Quick Pick select profiles; optional
VS Code Tasks are an adapter, not the persistence model.

Tags: backlog

Covers:
- `scn~configure-a-repeatable-filtered-trace~1`

Expand All @@ -128,6 +146,8 @@ The server exposes a normalized trace-result tree through a custom LSP command.
The VS Code adapter maps it to `TestController` items grouped by file, item,
and trace link; each node retains its source `Location` and defect detail.

Tags: backlog

Covers:
- `scn~inspect-structured-results~1`

Expand All @@ -140,6 +160,8 @@ The VS Code adapter registers a command that opens the canonical upstream user
guide using the host browser service. The guide itself is not bundled or
duplicated.

Tags: backlog

Covers:
- `scn~read-the-oft-guide~1`

Expand Down
Loading