feat: card-phase ergonomics (inventory, create_card phase_id, review fixes)#277
Closed
adriannoes wants to merge 6 commits into
Closed
feat: card-phase ergonomics (inventory, create_card phase_id, review fixes)#277adriannoes wants to merge 6 commits into
adriannoes wants to merge 6 commits into
Conversation
…ers) Extend create_card with phase_id and title on CreateCardInput; add get_phase_cards, get_phase_allowed_move_targets plumbing, get_pipe inventory fields, and pure planners for label hex validation and ReportCardsFilter preflight.
…ort preflight Register get_phase_allowed_move_targets, get_phase_cards_count, and get_phase_cards; extend create_card with phase_id, title on CreateCardInput, and merged start-form plus phase field filtering; enrich get_pipe; validate label colors and report filters before GraphQL.
…x, report filter Add phase allowed-moves, cards-count, and cards subcommands; wire card create --phase-id and --fields JSON; validate label colors and report filter shape at the CLI boundary.
Document new phase tools, create_card phase_id, get_pipe enrichment, label hex rules, and ReportCardsFilter examples; update parity matrix, README tool guidance, and CHANGELOG.
…se workflows Extend pipefy-pipes-and-cards with seed-across-phases workflow and tool-first table; update reports and api-fallback skills for ReportCardsFilter and Tier 1 tools.
Resolve false create_card title_warning, accept #RGB label colors, validate phase_id and ReportCardsFilter on all MCP/CLI paths, clamp phase cards --first, and lock get_pipe hard-fail at the service boundary.
Collaborator
Author
|
Closing in favor of a stacked review (6 smaller PRs) — same net diff as this branch, easier to review per layer. Stack (merge order):
Backup tag: New PRs will be linked in a follow-up comment once opened. |
This was referenced Jun 3, 2026
Collaborator
Author
Stacked replacement PRs (merge in order)
Net diff matches |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This work closes gaps identified while agent-seeding the Analytics pipe (
306996636) during the chaos-pipe exercise. Agents had to fall back toexecute_graphql, and sometimesintrospect_type/search_schema, because first-class MCP tools did not cover common card/phase workflows—even though the GraphQL API and parts of the SDK already supported them.What agents did with raw GraphQL (and why)
createCard+CreateCardInput.phase_idviaexecute_graphql;introspect_type("CreateCardInput")create_cardhad nophase_id; post-createupdate_cardfor titlephase { cards_count },phase { cards(first) }get_phase_cards_count/get_phase_cards;get_cardshas no phase filtermove_card_to_phasewhen destination ∈ allowed setget_phase_allowed_move_targetstool (SDK existed; not exposed)get_pipe+ ad-hoc phase queriesstart_form_phase; nocards_counton workflow phasescreate_label("red")failed; API expects hex (#RGB/#RRGGBB)ReportCardsFiltershape easy to get wrong (top-levelcurrent_phaserejected by API)What already worked without GraphQL
create_phase, field/condition setup, automations/AI agents (inactive),move_card_to_phasewhen the graph allowed it,get_pipe/get_phase_fields, andcreate_cardon the start form withskip_elicitation.Goal
Let agents seed, audit, and move cards on the happy path using dedicated SDK + MCP + CLI surfaces (parity in
docs/parity.md), without raw GraphQL for these flows. Phase transition graph editing stays UI-only (documented).Summary
get_pipeinventory enrichment (start_form_phase, per-phasecards_count), phase card reads/counts,create_cardwithphase_id/title,#RGBlabel colors, andReportCardsFilterpreflight planner.get_phase_cards,get_phase_cards_count,get_phase_allowed_move_targets,create_card(phase_id=…); report filter preflight on all filter-accepting mutations; docstring discovery hints forstart_form_phase.id.--phase-id/--firstvalidation, shared report-filter and page-size helpers.title_warning, expand label hex and report preflight coverage, validatephase_id, clampphase cards --first, service-levelget_pipehard-fail test, README/marketplace metadata forpipefy/ai-toolkit.docs/parity.md, MCP reference,pipefy-pipes-and-cardsskill workflow (Seed pipe across phases; prefer dedicated tools overexecute_graphql).Test plan
uv run ruff check ./ruff format --check .uv run pytest packages/sdk/tests -m "not integration"(936 passed)uv run pytest packages/mcp/tests -m "not integration"(1361 passed, CI dummyPIPEFY_*env)uv run pytest packages/cli/tests -m "not integration"(318 passed)uv run pytest tests/test_parity.py -m "not integration"(154 passed)uv run python .github/workflows/scripts/lint_skill_refs.py