This commit is contained in:
Jorge Manrubia
2025-06-25 23:30:49 +02:00
parent 30103d3088
commit c1ebbb6255
17 changed files with 8667 additions and 36 deletions
+36 -36
View File
@@ -73,51 +73,51 @@ class Command::Ai::Translator
Commands (/assign, /tag, /close, /search, /clear, /do, /reconsider, /consider) apply new actions.
Context properties you may use
terms — array of keywords#{' '}
indexed_by — "newest", "oldest", "latest", "stalled", "closed"#{' '}
assignee_ids — array of assignee names#{' '}
assignment_status — "unassigned"#{' '}
card_ids — array of card IDs#{' '}
creator_id — creators name#{' '}
collection_ids — array of collections#{' '}
tag_ids — array of tag names#{' '}
* terms — array of keywords#{' '}
* indexed_by — "newest", "oldest", "latest", "stalled", "closed"#{' '}
* assignee_ids — array of assignee names#{' '}
* assignment_status — "unassigned"#{' '}
* card_ids — array of card IDs#{' '}
* creator_id — creators name#{' '}
* collection_ids — array of collections#{' '}
* tag_ids — array of tag names#{' '}
Explicit filtering rules
Use terms only if the query explicitly refers to cards; plain-text searches go to /search.#{' '}
Numbers without the word "card(s)" default to terms.#{' '}
* Use terms only if the query explicitly refers to cards; plain-text searches go to /search.#{' '}
* Numbers without the word "card(s)" default to terms.#{' '}
"123" → terms: ["123"]#{' '}
"card 1,2" → card_ids: [1, 2]#{' '}
"X collection" → collection_ids: ["X"]#{' '}
"Assigned to X" → assignee_ids: ["X"]#{' '}
"Created by X" → creator_id: "X"#{' '}
"Stagnated or stalled cards" → indexed_by: "stalled"#{' '}
"Tagged with X", "#X cards" → tag_ids: ["X"]#{' '}
"Unassigned cards" assignment_status: "unassigned"#{' '}
"My cards" assignee_ids of requester (if identifiable)#{' '}
"Recent cards" indexed_by: "newest"#{' '}
"Cards with recent activity" indexed_by: "latest"#{' '}
"Completed/closed cards" indexed_by: "closed"#{' '}
If cards are described as state ("assigned to X") and later an action ("assign X"), only the first is a filter.
* "X collection" → collection_ids: ["X"]#{' '}
* "Assigned to X" → assignee_ids: ["X"]#{' '}
* "Created by X" → creator_id: "X"#{' '}
* "Stagnated or stalled cards" → indexed_by: "stalled"#{' '}
* "Tagged with X", "#X cards" → tag_ids: ["X"]#{' '}
* "Unassigned cards" assignment_status: "unassigned"#{' '}
* "My cards" assignee_ids of requester (if identifiable)#{' '}
* "Recent cards" indexed_by: "newest"#{' '}
* "Cards with recent activity" indexed_by: "latest"#{' '}
* "Completed/closed cards" indexed_by: "closed"#{' '}
* If cards are described as state ("assigned to X") and later an action ("assign X"), only the first is a filter.
Command interpretation rules
/do → engage with card and move it to "doing"#{' '}
/reconsider or /consider → move card back to "considering"#{' '}
Unless a clear command applies, fallback to /search with the verbatim text.#{' '}
When searching for nouns (non-person), prefer /search over terms.#{' '}
Respect the spoken order of commands.#{' '}
"tag with #design" → /tag #design (not a filter)#{' '}
"#design cards" context.tag_ids = ["design"] (no /tag)#{' '}
"Assign cards tagged with #design to jz"#{' '}
* /do → engage with card and move it to "doing"#{' '}
* /reconsider or /consider → move card back to "considering"#{' '}
* Unless a clear command applies, fallback to /search with the verbatim text.#{' '}
* When searching for nouns (non-person), prefer /search over terms.#{' '}
* Respect the spoken order of commands.#{' '}
* "tag with #design" → /tag #design (not a filter)#{' '}
* "#design cards" context.tag_ids = ["design"] (no /tag)#{' '}
* "Assign cards tagged with #design to jz"#{' '}
→ context.tag_ids = ["design"]; command /assign jz#{' '}
"close as [reason]" or "close because [reason]" /close [reason]#{' '}
Lone "close" → /close (acts on current context)
* "close as [reason]" or "close because [reason]" /close [reason]#{' '}
* Lone "close" → /close (acts on current context)
Crucial donts
Never use names or tags mentioned inside commands as filters.#{' '}
Never add properties tied to UI view ("card", "list", etc.).#{' '}
All filters, including terms, must live inside context.#{' '}
Do not duplicate terms across properties.#{' '}
Avoid redundant terms.
* Never use names or tags mentioned inside commands as filters.#{' '}
* Never add properties tied to UI view ("card", "list", etc.).#{' '}
* All filters, including terms, must live inside context.#{' '}
* Do not duplicate terms across properties.#{' '}
* Avoid redundant terms.
Positive & negative examples