Agent Skillsnasa/fprime › fprime-component-requirements

fprime-component-requirements

GitHub

指导F Prime组件开发的需求阶段,引导智能体与用户协作收集、文档化和确认组件的行为、接口及约束需求。

.github/skills/fprime-component-requirements/SKILL.md nasa/fprime

Trigger Scenarios

开始新组件开发 用户要求定义需求

Install

npx skills add nasa/fprime --skill fprime-component-requirements -g -y
More Options

Non-standard path

npx skills add https://github.com/nasa/fprime/tree/devel/.github/skills/fprime-component-requirements -g -y

Use without installing

npx skills use nasa/fprime@fprime-component-requirements

指定 Agent (Claude Code)

npx skills add nasa/fprime --skill fprime-component-requirements -a claude-code -g -y

安装 repo 全部 skill

npx skills add nasa/fprime --all -g -y

预览 repo 内 skill

npx skills add nasa/fprime --list

SKILL.md

Frontmatter
{
    "name": "fprime-component-requirements",
    "description": "Requirements phase of F Prime component development. Guides the agent through eliciting, documenting, and confirming component requirements before any design or code is written. Trigger when starting a new component or when the user says to define requirements. Keywords: F Prime, requirements, SDD, behavior, interface, specification."
}

Skill: F Prime Component Requirements

Requirements define what the component must do — its behaviors, interfaces, and constraints. This phase produces a written requirements list that drives all subsequent design and testing.

For context on the overall development process and where requirements fit, see the F´ Development Process. For guidance on work types and component kinds, see Selecting Component, Port, and Command Kinds.


STOP — Ask the User

You may draft requirements based on user input, but you cannot do requirements in isolation from the user. Draft requirements must stem from user-provided context and must be reviewed with the user before proceeding into development.

If any of the following are unclear, ask before proceeding:

  • What is the component's purpose / role in the system?
  • What other components does it interact with (upstream / downstream)?
  • What commands should the ground operator be able to send?
  • What telemetry should the component report?
  • What events (logs) should it emit and at what severity?
  • What parameters should be configurable at runtime?
  • Is this work event-driven, deadline-driven, or background? (See docs/user-manual/framework/component-and-port-selection.md for an explanation of the types of work.)
  • Are there any critical deadlines for this work?
  • Are there fault-handling or off-nominal requirements?
  • What existing F Prime components (Svc/, Drv/) can be built on top of?

Step-by-Step Process

Step 1 — Gather Context

Ask the user for:

  1. Component name and module: Where does this live in the project tree? (e.g., MyProject/Components/ThermalController)
  2. Work type: Event-driven, deadline-driven (cyclic), or background? This determines the component kind (active, passive, or queued). See docs/user-manual/framework/component-and-port-selection.md.
  3. High-level purpose: One-paragraph description of what this component does.

Step 2 — Define Behavioral Requirements

Requirements are written as "shall" or "should" statements. Each requirement must be something that can be validated/verified/tested.

Requirements are typically shipped as a table:

ID Shall Statement Description / Context Test Method
REQ-<Component>-001 The component shall <behavior>. <Human-readable context> <Unit test / integration test / inspection>
REQ-<Component>-002 ... ... ...

Categories to cover:

Category Ask the user
Nominal behavior What does it do on each cycle / invocation?
Commands What operator commands does it accept? What are the args?
Telemetry What values does it periodically report?
Events What noteworthy occurrences does it log? Severity?
Parameters What runtime-configurable values does it store?
Error handling How does it respond to invalid inputs or faults?
State management Does it have modes or states? Transitions?

Step 3 — Define Interface Requirements

For each external connection, define what data the component exchanges — not port types (those are a design decision, not a requirement):

  • Inputs: What data/invocations does the component receive? From whom?
  • Outputs: What data does the component send out? To whom?
  • Data types: What are the arguments/payloads crossing each interface?

Port types (sync/async/guarded) and FPP port definitions are determined during the Design phase based on the work type and timing constraints established here.

Step 4 — Confirm with User

Present the full requirements table to the user and wait for confirmation before proceeding to design. Requirements are the contract — everything downstream is verified against them.


Output Artifact

A requirements document (typically captured in the component's docs/sdd.md or as a structured list in the PR description) with:

  • Component name, module, and work type
  • Requirements table (ID, shall statement, description, test method)
  • Interface summary (data exchanged, not port types)
  • Any constraints or assumptions noted

Anti-Patterns

  • Guessing at what telemetry channels to add
  • Assuming command arguments without asking
  • Inventing error-handling behavior
  • Skipping requirements and jumping to FPP design
  • Copying another component's requirements without confirming applicability
  • Specifying port types or FPP constructs in requirements (those belong in the Design phase)

Version History

  • 7d8f579 Current 2026-08-20 11:33

Same Skill Collection

.github/skills/agent-skill-authoring/SKILL.md
.github/skills/ci-test-runtime-policy/SKILL.md
.github/skills/fprime-cmake-build-system/SKILL.md
.github/skills/fprime-component-design-fpp/SKILL.md
.github/skills/fprime-component-development/SKILL.md
.github/skills/fprime-component-implementation/SKILL.md
.github/skills/fprime-component-integration-test/SKILL.md
.github/skills/fprime-component-unit-test/SKILL.md
.github/skills/fprime-ground-input-tracing/SKILL.md
.github/skills/fprime-hardware-input-tracing/SKILL.md
.github/skills/fprime-topology-development/SKILL.md
.github/skills/fprime-unit-testing/SKILL.md
.github/skills/jpl-design-principles/SKILL.md
.github/skills/maintainer-lookup/SKILL.md
.github/skills/post-inline-review/SKILL.md
.github/skills/pr-diff-scoping/SKILL.md
.github/skills/prompt-injection-precheck/SKILL.md
.github/skills/re-review-state/SKILL.md
.github/skills/triage-classifier/SKILL.md
.github/skills/write-system-functional-doc/SKILL.md
.github/skills/fprime-cpp-design/SKILL.md

Metadata

Files
0
Version
efce12d
Hash
6f2519c8
Indexed
2026-08-20 11:33

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-17 05:32
浙ICP备14020137号-1