feat: Add openspec-sync-specs and openspec-verify-change skills
- Introduced `openspec-sync-specs` skill to sync delta specs to main specs, allowing intelligent merging of requirements. - Added `openspec-verify-change` skill to verify implementation against change artifacts, ensuring completeness, correctness, and coherence before archiving. docs: Create CLAUDE.md for project guidance - Added CLAUDE.md to provide an overview of the PCLI project, including build, test commands, architecture, and resource addition guidelines. chore: Add new change and design documents for project filter in status command - Created `.openspec.yaml`, `design.md`, `proposal.md`, and `tasks.md` for the `add-project-filter-to-status` change. - Updated specs for CLI commands and status command to include project filtering functionality. feat: Expand board included parsing in API client - Added parsing for `labels`, `cardLabels`, and `cardMemberships` in the `GetBoard` response. - Updated `ListCardsByBoard` to enrich card output with label names, enhancing usability in kanban sync workflows.
This commit is contained in:
@@ -109,6 +109,8 @@ func printTable(data any, w io.Writer) error {
|
||||
return printBoardTable([]model.Board{*data}, tw)
|
||||
case *model.Card:
|
||||
return printCardTable([]model.Card{*data}, tw)
|
||||
case *model.CardDetail:
|
||||
return printCardDetailTable(data, tw)
|
||||
case *model.Comment:
|
||||
return printCommentTable([]model.Comment{*data}, tw)
|
||||
case *model.TaskList:
|
||||
@@ -164,6 +166,29 @@ func printCardWithListTable(cards []model.CardWithList, tw *tabwriter.Writer) er
|
||||
return nil
|
||||
}
|
||||
|
||||
func printCardDetailTable(card *model.CardDetail, tw *tabwriter.Writer) error {
|
||||
fmt.Fprintln(tw, "ID\tNAME\tLIST_ID\tTYPE\tCLOSED")
|
||||
fmt.Fprintf(tw, "%s\t%s\t%s\t%s\t%v\n", card.ID, card.Name, card.ListID, card.Type, card.IsClosed)
|
||||
|
||||
if len(card.TaskLists) > 0 {
|
||||
fmt.Fprintln(tw)
|
||||
fmt.Fprintln(tw, "TASK_LIST_ID\tTASK_LIST_NAME\tPOSITION")
|
||||
for _, tl := range card.TaskLists {
|
||||
fmt.Fprintf(tw, "%s\t%s\t%.0f\n", tl.ID, tl.Name, tl.Position)
|
||||
}
|
||||
}
|
||||
|
||||
if len(card.Tasks) > 0 {
|
||||
fmt.Fprintln(tw)
|
||||
fmt.Fprintln(tw, "TASK_ID\tTASK_NAME\tTASK_LIST_ID\tCOMPLETED")
|
||||
for _, t := range card.Tasks {
|
||||
fmt.Fprintf(tw, "%s\t%s\t%s\t%v\n", t.ID, t.Name, t.TaskListID, t.IsCompleted)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func printCommentTable(comments []model.Comment, tw *tabwriter.Writer) error {
|
||||
fmt.Fprintln(tw, "ID\tCARD_ID\tTEXT\tCREATED_AT")
|
||||
for _, c := range comments {
|
||||
|
||||
Reference in New Issue
Block a user