Added list management commands, board filtering by project name, and enhanced skill documentation with bootstrap workflow and error handling patterns. Also added plumbing in to "pcli" binary for status syncing with Planka

This commit is contained in:
Steve Cliff
2026-02-18 20:06:56 +00:00
parent ad384fe749
commit 46b03e1a22
21 changed files with 1074 additions and 124 deletions
@@ -0,0 +1,38 @@
# Board List Filtering
## Purpose
Provides filtering capabilities for the `board list` command to scope results by project name.
## Requirements
### Requirement: Board list project filtering
The system SHALL provide a `--project <name>` flag for the `board list` command. When the flag is provided, the system SHALL resolve the project name to a project ID by calling `ListProjects()` and performing a case-insensitive exact match on the project name. If no matching project is found, the system SHALL output an error message "project not found: <name>" and exit with code 1. If a matching project is found, the system SHALL filter the board list to include only boards where `projectId` matches the resolved project ID. When the `--project` flag is omitted, the system SHALL list all accessible boards without filtering.
#### Scenario: List boards without project filter
- **WHEN** `pcli board list` is executed without the `--project` flag
- **THEN** the system SHALL output all accessible boards across all projects
#### Scenario: List boards filtered by project name
- **WHEN** `pcli board list --project "project1"` is executed
- **THEN** the system SHALL resolve "project1" to a project ID
- **AND** the system SHALL output only boards belonging to that project
#### Scenario: List boards with case-insensitive project match
- **WHEN** `pcli board list --project "PROJECT1"` is executed and a project named "project1" exists
- **THEN** the system SHALL match the project case-insensitively
- **AND** the system SHALL output boards belonging to the matched project
#### Scenario: Project name not found
- **WHEN** `pcli board list --project "nonexistent"` is executed
- **THEN** the system SHALL output "project not found: nonexistent"
- **AND** the system SHALL exit with code 1
#### Scenario: Project exists but has no boards
- **WHEN** `pcli board list --project "empty-project"` is executed for a project with no boards
- **THEN** the system SHALL output an empty list (or empty JSON array in JSON format)
#### Scenario: User lacks access to project
- **WHEN** `pcli board list --project "restricted"` is executed for a project the user cannot access
- **THEN** the system SHALL output "project not found: restricted"
- **AND** the system SHALL exit with code 1
+12 -1
View File
@@ -60,8 +60,19 @@ The system SHALL provide a `project` command group with subcommands `list`, `get
- **WHEN** `pcli project delete <id>` is executed with a non-existent project ID
- **THEN** the system SHALL output "delete project: not found — the resource may not exist or you may not have access to it"
### Requirement: Board list command
The system SHALL provide a `board list` subcommand. `pcli board list` SHALL call the client's ListBoards method and output all accessible boards. The command SHALL accept an optional `--project <name>` flag (string). When `--project` is provided, the system SHALL filter boards to only those belonging to the specified project (see board-list-filtering spec for filtering behavior).
#### Scenario: List all boards
- **WHEN** `pcli board list` is executed without flags
- **THEN** the system SHALL output all accessible boards
#### Scenario: List boards filtered by project
- **WHEN** `pcli board list --project "project1"` is executed
- **THEN** the system SHALL output only boards belonging to the specified project
### Requirement: Board commands
The system SHALL provide a `board` command group with subcommands `get`, `actions`, `create`, and `delete`. `pcli board get <id>` SHALL accept a board ID as a positional argument and output the board details. `pcli board actions <id>` SHALL accept a board ID and an optional `--limit` flag (int, default 0) and output the board's action history. `pcli board create` SHALL create a new board. `pcli board delete <id>` SHALL delete a board.
The system SHALL provide a `board` command group with subcommands `list`, `get`, `actions`, `create`, and `delete`. `pcli board list` SHALL list all accessible boards and accept an optional `--project <name>` flag for filtering. `pcli board get <id>` SHALL accept a board ID as a positional argument and output the board details. `pcli board actions <id>` SHALL accept a board ID and an optional `--limit` flag (int, default 0) and output the board's action history. `pcli board create` SHALL create a new board. `pcli board delete <id>` SHALL delete a board.
#### Scenario: Get board
- **WHEN** `pcli board get <id>` is executed