Skip to content
Tools/Spec Introspection/list_anti_patterns

list_anti_patterns

List curated cross-domain anti-patterns from `UPG_ANTI_PATTERNS`. Each row pairs a memorable name with a machine-evaluable `IntelligenceCondition`, applicable stages, severity, and remediation. Graph-health patterns evaluated whole-graph (distinct from per-domain anti-patterns via `get_domain_guide`). Paginated (default 50, max 200). Filters AND together: `severity` (`high` / `medium` / `low`), `stage` (keeps patterns whose `stages[]` includes the given `UPGProductStage`).

Spec Introspectionatomic (read-only)

Arguments

severitystringoptional

Exact-match UPGAntiPatternSeverity.

highmediumlow
stagestringoptional

Keeps anti-patterns whose stages[] includes the given UPGProductStage.

conceptvalidationbuildbetalaunchgrowthmaturemaintenancesunset
limitnumberoptional

Page size (default 50, max 200).

cursorstringoptional

Opaque pagination cursor. Pass next_cursor from a previous response.

Returns

Shape
{ total, count, next_cursor?, anti_patterns: UPGCuratedAntiPattern[] }

Examples

Live call against the Notion example graph.

Output

{
  "total": 12,
  "count": 12,
  "anti_patterns": [
    {
      "id": "personas-without-jobs",
      "name": "Personas without jobs",
      "description": "The graph has persona entities, but none link into the user chain via any of the v0.2 chain edges (job, need, desired_outcome, or switching_cost). A persona without chain links is a demographic profile: who someone is, not what they are trying to get done.",
      "structured_condition": {
        "operator": "and",
        "checks": [
          {
            "check": {
              "type": "entity_count",
              "entity_type": "persona",
              "comparison": "nonzero"
            }
          },
          {
            "check": {
              "type": "relationship",
              "source_type": "persona",
              "edge_type": "persona_pursues_job",
              "target_type": "job",
              "comparison": "not_exists"
            }
          },
          {
            "check": {
              "type": "relationship",
              "source_type": "persona",
              "edge_type": "persona_experiences_need",
              "target_type": "need",
              "comparison": "not_exists"
            }
          },
          {
            "check": {
              "type": "relationship",
              "source_type": "persona",
              "edge_type": "persona_aspires_to_desired_outcome",
… (truncated)

See Also