agentsclimarketplace

Specification writer

Skill AnotherDaniel/tsfagent/.agents/skills/specification-writer

An AI agent framework for building trustable software projects from the ground up — from a user's high-level goal through formal specification, quality assurance, and traceable implementation.

Install
npx -y skills add AnotherDaniel/tsfagent --skill specification-writer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Write and maintain OpenFastTrace (OFT) requirements specifications in markdown. Use when: creating new requirements, adding requirements to specification documents, reviewing requirement format, generating req~ identifiers, setting Needs/Depends tracing directives. Keywords: requirement, specification, OFT, OpenFastTrace, req~, BCP14, RFC 2119, tracing.

SKILL.md

7.8 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

Specification Writer

Write formal requirements in OpenFastTrace (OFT) markdown format, following IETF BCP14 keyword conventions and proper traceability structure.

When to Use

  • Adding requirements to an existing specification document
  • Reviewing or correcting OFT requirement syntax
  • Breaking down high-level goals into traceable requirements

This skill assumes a specification document already exists. Read the existing document first to understand its section structure, naming conventions, and BCP14 preamble before adding requirements.

Handoff

Inputs

  • User goals or feature descriptions to decompose into formal requirements
  • Existing specification documents to extend

Outputs

  • req~<name>~<version> identifiers with Needs: directives — consumed by developer to implement and test
  • Requirement IDs — consumed by tsf-author to align TSF quality statements with specification items

Related Skills

This skill is the first step in the tsftemplate triad:

  1. specification-writer (this skill) decomposes user goals into req~ items
  2. tsf-author creates TSF quality statements aligned with these requirements
  3. developer implements requirements, adds OFT markers, and wires CI evidence

Requirement Format

Each requirement follows this exact pattern:

#### <Descriptive title>

`req~<short-name>~<version>`:
<Requirement text using BCP14 keywords in *italic*.>

Needs: <tracing-directives>

Requirement ID Rules

  • Format: `req~<short-name>~<version>`
  • short-name: lowercase, hyphen-separated, concise identifier (e.g. project-readme, security-policy)
  • version: integer starting at 1; increment when:
    • The obligation level changes (e.g., SHOULD becomes MUST)
    • The scope of what is required changes (e.g., adding or removing conditions)
    • The verifiable outcome changes
    • Do NOT increment for: typo fixes, rewording that preserves meaning, formatting changes
  • The ID line MUST end with a colon (:)
  • The requirement text follows immediately on the next line

BCP14 Keyword Usage

Use IETF BCP14 keywords in italic to express obligation levels:

KeywordMeaning
MUST / MUST NOTAbsolute requirement or prohibition
REQUIRED / SHALLSynonyms for MUST
SHOULD / SHOULD NOTRecommended unless valid reason to deviate
RECOMMENDEDSynonym for SHOULD
MAY / OPTIONALTruly optional behavior

Only use these keywords in their BCP14 sense. Do NOT italicize them when used in their ordinary English sense.

Tracing Directives

The Needs: line declares what artifact types must reference this requirement for it to be considered covered:

DirectiveMeaning
implAn implementation must reference this requirement
utestA unit test must reference this requirement
itestAn integration test must reference this requirement
stestA system-level test must reference this requirement

Combine directives as needed (e.g. Needs: impl, utest, itest).

Choose directives based on the requirement's nature:

  • Documentation/process requirements: Needs: impl
  • Behavioral/functional requirements: Needs: impl, utest
  • Requirements involving external systems or integration points: Needs: impl, utest, itest
  • Design constraints: Needs: impl

Dependencies

When a requirement depends on another, add a Depends: block:

Depends:
- req~other-requirement~1

Dependencies are listed as bullet items, each referencing a full requirement ID.

Procedure

Decomposing User Goals into Requirements

When the user describes a high-level goal or feature (e.g., "I want vulnerability scanning"), break it down into formal requirements:

  1. Identify distinct concerns. List the concrete, separable aspects of the goal. For "vulnerability scanning" this might be: scanning runs automatically, known CVEs are flagged, results are available as artifacts, and scanning covers transitive dependencies.
  2. Apply the singularity test. Each concern should be independently testable. If a candidate requirement contains "and" joining two verifiable outcomes, split it.
  3. Choose the right granularity.
    • Too coarse: requirement cannot be meaningfully tested or traced to specific code → split further
    • Too fine: requirement describes an implementation detail rather than a verifiable outcome → merge up
    • Right level: one req~ item maps naturally to one function/module and one or more test cases
  4. Assign tracing directives per requirement type:
    • The requirement describes behavior or logic: Needs: impl, utest
    • The requirement describes system integration or external interaction: Needs: impl, utest, itest
    • The requirement describes a document or process artifact: Needs: impl
  5. Check for dependencies between the resulting requirements and add Depends: where one presupposes another.

Writing New Requirements

  1. Identify the target specification document. Look for an existing specification.md or equivalent in the docs/ directory.
  2. Determine the appropriate section. Group related requirements under a descriptive heading hierarchy.
  3. Choose a requirement ID. Use a concise, hyphen-separated name that reflects the requirement's subject. Check existing IDs to avoid collisions and maintain consistent naming style.
  4. Write the requirement text. Each requirement should be:
    • Singular: one testable/verifiable concern per requirement
    • Falsifiable: it must be possible to determine whether the requirement is met
    • Precise: use BCP14 keywords to express obligation level unambiguously
    • Self-contained: understandable without reading other requirements (dependencies clarify relationships, not meaning)
  5. Set tracing directives. Add Needs: with appropriate coverage types.
  6. Declare dependencies. Add Depends: if this requirement presupposes another.

Adding to an Existing Specification

  1. Read the existing specification to understand the section structure and naming conventions.
  2. Find the correct section or create a new subsection if the topic is not yet covered.
  3. Follow the naming pattern of existing requirement IDs (e.g., if existing IDs use project- prefix, continue that convention).
  4. Add the new requirement following the format above.
  5. Verify the target document's directory is included in .env.oft OFT_FILE_PATTERNS. If not, update .env.oft.

Quality Checklist

Before finalizing a requirement, verify:

  • ID follows req~<name>~<version> format with colon suffix
  • BCP14 keywords are italicized and used in their normative sense
  • Requirement is singular (one concern) and falsifiable
  • Needs: directive is present and appropriate
  • Depends: is declared if prerequisite requirements exist
  • Requirement text does not duplicate an existing requirement
  • Section placement is logical within the document hierarchy

Example

### Security requirements

#### Security policy

`req~security-policy~1`:
The project *MUST* provide a publicly accessible security policy that describes the process for reporting and handling security vulnerabilities.

Needs: impl

#### Dependency vulnerability scanning

`req~dependency-scanning~1`:
The project *SHOULD* perform automated vulnerability scanning of all direct and transitive dependencies as part of the CI pipeline.

Needs: impl, test

Depends:
- req~security-policy~1

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.