Skip to content
Closed
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
47 changes: 37 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,52 @@
<p align="center">
<a href="https://github.com/Fission-AI/OpenSpec">
<a href="https://github.com/appyboypov/OpenSplx">
<picture>
<source srcset="assets/openspec_pixel_dark.svg" media="(prefers-color-scheme: dark)">
<source srcset="assets/openspec_pixel_light.svg" media="(prefers-color-scheme: light)">
<img src="assets/openspec_pixel_light.svg" alt="OpenSpec logo" height="64">
<source srcset="assets/opensplx_pixel_dark.svg" media="(prefers-color-scheme: dark)">
<source srcset="assets/opensplx_pixel_light.svg" media="(prefers-color-scheme: light)">
<img src="assets/opensplx_pixel_light.svg" alt="OpenSplx logo" height="64">
</picture>
</a>

</p>
<p align="center">Spec-driven development for AI coding assistants.</p>
<p align="center">
<a href="https://github.com/Fission-AI/OpenSpec/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Fission-AI/OpenSpec/actions/workflows/ci.yml/badge.svg" /></a>
<a href="https://www.npmjs.com/package/@fission-ai/openspec"><img alt="npm version" src="https://img.shields.io/npm/v/@fission-ai/openspec?style=flat-square" /></a>
<a href="https://github.com/Fission-AI/OpenSpec"><img alt="Fork of OpenSpec" src="https://img.shields.io/badge/Fork%20of-OpenSpec-blue?style=flat-square" /></a>
<a href="https://nodejs.org/"><img alt="node version" src="https://img.shields.io/node/v/@fission-ai/openspec?style=flat-square" /></a>
<a href="./LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square" /></a>
<a href="https://conventionalcommits.org"><img alt="Conventional Commits" src="https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square" /></a>
<a href="https://discord.gg/YctCnvvshC"><img alt="Discord" src="https://img.shields.io/badge/Discord-Join%20the%20community-5865F2?logo=discord&logoColor=white&style=flat-square" /></a>
</p>

<p align="center">
<img src="assets/openspec_dashboard.png" alt="OpenSpec dashboard preview" width="90%">
<img src="assets/openspec_dashboard.png" alt="OpenSplx dashboard preview" width="90%">
</p>

# OpenSplx

> **Fork Notice:** OpenSplx is a community fork of [OpenSpec](https://github.com/Fission-AI/OpenSpec).
> It adds the `plx` command alias and extended features while maintaining full compatibility
> with the original OpenSpec workflow.

## What's Different in OpenSplx

| Feature | OpenSpec | OpenSplx |
|---------|----------|----------|
| Command | `openspec` | `openspec` + `plx` alias |
| Install | `npm i -g @fission-ai/openspec` | Clone & `npm link` (local) |

### Quick Start (OpenSplx)

```bash
git clone https://github.com/appyboypov/OpenSplx.git
cd OpenSplx
pnpm install && pnpm build
npm link
plx --version # or openspec --version
```

---

<details>
<summary><strong>Original OpenSpec Documentation</strong> (click to expand)</summary>

<p align="center">
Follow <a href="https://x.com/0xTab">@0xTab on X</a> for updates · Join the <a href="https://discord.gg/YctCnvvshC">OpenSpec Discord</a> for help and questions.
</p>
Expand Down Expand Up @@ -379,3 +404,5 @@ Run `openspec update` whenever someone switches tools so your agents pick up the
## License

MIT

</details>
94 changes: 94 additions & 0 deletions assets/opensplx_pixel_dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 94 additions & 0 deletions assets/opensplx_pixel_light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions bin/plx.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env node

import '../dist/cli/index.js';
37 changes: 37 additions & 0 deletions openspec/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,43 @@ After deployment, create separate PR to:
- Change: `openspec show <change-id> --json --deltas-only`
- Full-text search (use ripgrep): `rg -n "Requirement:|Scenario:" openspec/specs`

## External Issue Tracking

Proposals may reference external issues (Linear, GitHub, Jira, etc.). When detected, track and update them throughout the workflow.

### Detection

When user input contains issue references:
1. Confirm with user: "I detected [issue]. Track and post progress updates?"
2. If confirmed, fetch issue metadata using available tools
3. Store in proposal.md frontmatter:

```yaml
---
tracked-issues:
- tracker: linear
id: SM-123
url: https://linear.app/team/issue/SM-123
---
```

Only store immutable references (tracker, id, url). Fetch current details from the API when needed.

### Updates

Post progress to tracked issues at these points:
- **Proposal created**: Comment linking to the change
- **Section completed**: Comment with progress (batch per section, not per checkbox)
- **Archive complete**: Final summary comment

### User Confirmation

Before any external update, present a summary and wait for confirmation. Never auto-post.

### Tool Usage

Use available tools to interact with issue trackers. If no tools available for a tracker, note the issue URL for manual updates.

## Quick Start

### CLI Commands
Expand Down
23 changes: 23 additions & 0 deletions openspec/changes/add-external-issue-tracking/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Change: add-external-issue-tracking

## Why

When external issues (Linear, GitHub, Jira, etc.) are provided with a proposal, OpenSpec ignores them. The CLI doesn't display issue references, and agents have no guidance on tracking or updating external issues throughout the proposal lifecycle.

## What Changes

- Add YAML frontmatter support to proposal.md for storing tracked issue references
- Display issue identifiers in CLI output (`openspec list`, `openspec show`, `openspec archive`)
- Add "External Issue Tracking" section to AGENTS.md with guidance for detecting, storing, and updating external issues

## Impact

- Affected specs: None (new capability, no existing specs)
- Affected code:
- `src/core/parsers/markdown-parser.ts` - Add YAML frontmatter extraction
- `src/core/parsers/change-parser.ts` - Include frontmatter in parsed result
- `src/core/schemas/change.schema.ts` - Add trackedIssues type
- `src/core/list.ts` - Display issue in list output
- `src/commands/change.ts` - Include issue in show/list output
- `src/core/archive.ts` - Report tracked issues on archive
- `openspec/AGENTS.md` - Add External Issue Tracking section
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
## MODIFIED Requirements

### Requirement: Display Output

The command SHALL provide clear feedback about delta operations and tracked issues.

#### Scenario: Showing delta application

- **WHEN** applying delta changes
- **THEN** display for each spec:
- Number of requirements added
- Number of requirements modified
- Number of requirements removed
- Number of requirements renamed
- **AND** use standard output symbols (+ ~ - →) as defined in openspec-conventions:
```
Applying changes to specs/user-auth/spec.md:
+ 2 added
~ 3 modified
- 1 removed
→ 1 renamed
```

#### Scenario: Showing tracked issues on archive

- **WHEN** archiving a change with tracked issues in frontmatter
- **THEN** display the tracked issue identifiers in the success message
- **AND** format as: `Archived 'change-name' (ISSUE-ID)`

#### Scenario: Archiving change without tracked issues

- **WHEN** archiving a change without tracked issues
- **THEN** display the standard success message without issue reference
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## MODIFIED Requirements

### Requirement: Output Format
The command SHALL display items in a clear, readable table format with mode-appropriate progress or counts, including tracked issue references when available.

#### Scenario: Displaying change list (default)
- **WHEN** displaying the list of changes
- **THEN** show a table with columns:
- Change name (directory name)
- Tracked issue identifier (if present in frontmatter, e.g., "(SM-123)")
- Task progress (e.g., "3/5 tasks" or "✓ Complete")

#### Scenario: Displaying change with tracked issue
- **WHEN** a change has `tracked-issues` in proposal.md frontmatter
- **THEN** display the first issue identifier in parentheses after the change name
- **AND** format as: `change-name (ISSUE-ID) [task progress]`

#### Scenario: Displaying change without tracked issue
- **WHEN** a change has no `tracked-issues` in proposal.md frontmatter
- **THEN** display the change without issue identifier
- **AND** format as: `change-name [task progress]`

#### Scenario: Displaying spec list
- **WHEN** displaying the list of specs
- **THEN** show a table with columns:
- Spec id (directory name)
- Requirement count (e.g., "requirements 12")
Loading