{
  "name": "Robert's Rules Essentials",
  "slug": "roberts-rules-essentials",
  "version": "1.0.1",
  "license": "MIT",
  "license_url": "https://opensource.org/licenses/MIT",
  "manifest": {
    "schema_version": "1",
    "toolkit_prompt": "You are a parliamentary procedure assistant using simplified Robert's Rules of Order. Use clear, accessible language while maintaining proper meeting structure. Focus on the essentials: motions, seconds, and votes. This simplified approach is ideal for small boards, committees, and organizations new to parliamentary procedure.",
    "templates": [
      {
        "spec": {
          "$id": "rr-lite-meeting",
          "name": "Board Meeting (Robert's Rules Essentials)",
          "description": "A streamlined board or committee meeting using simplified Robert's Rules. Covers the core parliamentary elements without overwhelming complexity. Ideal for small boards, advisory committees, and organizations adopting formal procedures for the first time.",
          "title": "Board Meeting",
          "meeting_duration_seconds": 3600,
          "start_time_offset_seconds": -1,
          "detail_level": "STANDARD",
          "agenda_items": [
            {
              "item_type": "DISCUSSION",
              "title": "Call to Order & Roll Call",
              "description": "## 📋 Attendance & Quorum Tracker\n\n**Meeting Called to Order**: [time]\n\n| Member | Present | Proxy | Notes |\n|--------|---------|-------|-------|\n| | ☐ | ☐ | |\n| | ☐ | ☐ | |\n| | ☐ | ☐ | |\n| | ☐ | ☐ | |\n| | ☐ | ☐ | |\n| | ☐ | ☐ | |\n\n**Quorum Required**: [ ] members\n**Present**: [ ] members\n**Quorum Status**: ☐ Met ☐ Not Met\n\n---\n\n### Late Arrivals / Early Departures\n| Member | Time | Type |\n|--------|------|------|\n| | | Arrived / Departed |",
              "content": "**Facilitator Script**\n\n1. State: \"The meeting will come to order.\"\n2. Take attendance (roll call or sign-in sheet).\n3. Confirm quorum: \"A quorum is present. We may proceed with business.\"\n\n**If no quorum:** The meeting cannot conduct official business. You may only discuss matters informally or adjourn to a later time.",
              "time_allocation_minutes": 5,
              "sequence": "1",
              "restricted_to_leads": false
            },
            {
              "item_type": "DISCUSSION",
              "title": "Approval of Minutes",
              "description": "Review and approve minutes from the previous meeting.",
              "content": "**Facilitator Script**\n\n1. \"The minutes of our last meeting have been distributed. Are there any corrections?\"\n2. If corrections: note them and state \"The minutes are approved as corrected.\"\n3. If no corrections: \"Hearing none, the minutes are approved as distributed.\"",
              "time_allocation_minutes": 5,
              "sequence": "2",
              "restricted_to_leads": false
            },
            {
              "item_type": "DISCUSSION",
              "title": "Reports",
              "description": "Brief updates from officers and committees.",
              "content": "**Facilitator Script**\n\n1. Call on each officer/committee chair for a brief report.\n2. After each: \"Thank you. The report is received.\"\n3. If a report includes a recommendation requiring action, handle it under Business.\n\n**Keep reports brief** — detailed discussion belongs in Business.",
              "time_allocation_minutes": 15,
              "sequence": "3",
              "restricted_to_leads": false
            },
            {
              "item_type": "DISCUSSION",
              "title": "Business",
              "description": "## ⚖️ Motion Tracker\n\n| # | Motion | Moved By | Seconded | Vote | Result |\n|---|--------|----------|----------|------|--------|\n| 1 | | | | Ayes: / Nays: | ☐ Passed ☐ Failed |\n| 2 | | | | Ayes: / Nays: | ☐ Passed ☐ Failed |\n| 3 | | | | Ayes: / Nays: | ☐ Passed ☐ Failed |\n| 4 | | | | Ayes: / Nays: | ☐ Passed ☐ Failed |\n\n---\n\n### 📝 Action Items from Motions\n| Motion # | Action | Assigned To | Due |\n|----------|--------|-------------|-----|\n| | | | |\n| | | | |",
              "content": "**Facilitator Script**\n\n1. First, address any unfinished items from previous meetings.\n2. Then ask: \"Is there any new business?\"\n3. For each motion:\n   - Member states: \"I move that [proposal].\"\n   - Another member: \"I second.\"\n   - Chair: \"It is moved and seconded that [restate]. Discussion?\"\n   - After discussion: \"All in favor say Aye. Opposed, No.\"\n   - Announce result: \"The motion carries.\" or \"The motion fails.\"\n\n**Simple Motion Flow:**\n1. Motion → 2. Second → 3. Discussion → 4. Vote → 5. Announce Result",
              "time_allocation_minutes": 30,
              "sequence": "4",
              "restricted_to_leads": false
            },
            {
              "item_type": "ADJOURN",
              "title": "Adjournment",
              "description": "Close the meeting.",
              "content": "**Facilitator Script**\n\n1. \"Is there any other business?\" (Pause)\n2. \"If there is no objection, we will adjourn. Hearing none, the meeting is adjourned at [time].\"\n\n*Or if someone moves to adjourn:* \"All in favor of adjourning say Aye. The meeting is adjourned.\"",
              "time_allocation_minutes": 5,
              "sequence": "5",
              "restricted_to_leads": false
            }
          ]
        },
        "next_steps": [
          {
            "next_step": {
              "$ref": "ns-rr-lite-minutes"
            },
            "sort_order": 1,
            "autopilot": true
          },
          {
            "next_step": {
              "$ref": "ns-rr-lite-actions"
            },
            "sort_order": 2,
            "autopilot": false
          }
        ]
      }
    ],
    "next_steps": [
      {
        "spec": {
          "$id": "ns-rr-lite-minutes",
          "name": "Meeting Summary",
          "description": "Generates a clear meeting summary with attendance, decisions made, and action items. Uses plain language suitable for general distribution.",
          "icon_name": "scroll",
          "color": "#1E40AF",
          "type": "ai",
          "ai_prompt": "Create a clear, concise meeting summary from this transcript. Include:\n\n1. **Meeting Info**: Date, time, attendees present\n2. **Minutes Approval**: Note if previous minutes were approved\n3. **Reports**: One-line summary of each report given\n4. **Decisions Made**: For each vote taken, state:\n   - What was proposed\n   - The outcome (approved/not approved)\n5. **Action Items**: Tasks assigned with responsible person\n6. **Next Meeting**: Date/time if announced\n\nUse plain language. Keep it to one page when possible.",
          "sort_order": 1
        },
        "action_buttons": [
          {
            "action_button": {
              "$ref": "ab-rr-lite-email"
            },
            "sort_order": 1
          }
        ],
        "default_action_button": {
          "$ref": "ab-rr-lite-email"
        }
      },
      {
        "spec": {
          "$id": "ns-rr-lite-actions",
          "name": "Action Items",
          "description": "Extracts action items and follow-ups from the meeting.",
          "icon_name": "list-check",
          "color": "#059669",
          "type": "ai",
          "ai_prompt": "List all action items from this meeting:\n\n| Task | Assigned To | Due Date |\n|------|-------------|----------|\n\nInclude both formal assignments and informal commitments (\"I'll send that by Friday\").",
          "sort_order": 2
        },
        "action_buttons": [
          {
            "action_button": {
              "$ref": "ab-rr-lite-copy"
            },
            "sort_order": 1
          },
          {
            "action_button": {
              "$ref": "ab-rr-lite-email"
            },
            "sort_order": 2
          }
        ],
        "default_action_button": {
          "$ref": "ab-rr-lite-copy"
        }
      }
    ],
    "action_buttons": [
      {
        "spec": {
          "$id": "ab-rr-lite-email",
          "name": "Email Summary",
          "slug": "rr-lite-email",
          "delivery_mechanism": "email",
          "content_format": "rich_text",
          "sort_order": 1
        }
      },
      {
        "spec": {
          "$id": "ab-rr-lite-copy",
          "name": "Copy to Clipboard",
          "slug": "rr-lite-copy",
          "delivery_mechanism": "clipboard",
          "content_format": "plain_text",
          "sort_order": 2
        }
      }
    ],
    "shortcuts": [
      {
        "spec": {
          "$id": "sc-rr-lite-motion",
          "name": "Make a Motion (Quick)",
          "description": "AI records a motion by analyzing the recent transcript.",
          "icon_name": "bolt",
          "color": "#1E40AF",
          "surfaces": [
            {
              "surface": "MEETING_RUN",
              "position": 1
            }
          ],
          "prompt": "You are the parliamentary assistant for this meeting. Analyze the LAST 2 MINUTES of the meeting transcript to identify and record a motion.\n\n**Your task:**\n1. Find the motion statement (look for phrases like \"I move that...\", \"I make a motion to...\", or similar).\n2. Identify WHO made the motion (the speaker's name).\n3. Identify WHO seconded it (if a second has been stated).\n4. Find the **Motion Tracker** table in the 'Business' agenda item's collaborative description.\n5. ADD A NEW ROW to that table with:\n   - Motion # (next sequential number)\n   - The exact motion wording\n   - Moved By (speaker name)\n   - Seconded (if known, or leave blank)\n   - Discussion Summary: (leave blank for now)\n   - Vote: (leave blank)\n   - Result: (leave blank)\n\nIf you cannot find a clear motion in the recent transcript, inform the facilitator and ask them to state the motion clearly.\n\n**After updating the table**, announce: \"Motion #{number} has been recorded: [brief summary]. Awaiting second/discussion.\""
        }
      },
      {
        "spec": {
          "$id": "sc-rr-lite-vote",
          "name": "Record Vote (Quick)",
          "description": "AI records the vote outcome by analyzing the transcript and updating the motion tracker.",
          "icon_name": "chart-line-up",
          "color": "#7C3AED",
          "surfaces": [
            {
              "surface": "MEETING_RUN",
              "position": 2
            }
          ],
          "prompt": "You are the parliamentary assistant. Analyze the LAST 1 MINUTE of the meeting transcript to record the vote outcome.\n\n**Your task:**\n1. Listen for the vote announcement (ayes, nays, or counted vote).\n2. Find the **Motion Tracker** table in the 'Business' agenda item's collaborative description.\n3. Locate the MOST RECENT pending motion row (one without a Result filled in).\n4. UPDATE that row with:\n   - Vote: \"Ayes: X / Nays: Y\" (or \"Voice vote\" if not counted)\n   - Result: Check ☑ Carried or ☑ Failed based on the announcement\n\nIf there are resulting action items from the passed motion, add them to the **Resulting Action Items** table below the motion tracker.\n\n**After updating**, announce: \"Vote recorded for Motion #{number}: [Result]. [If carried: Action item noted for {responsible party}.]\""
        }
      },
      {
        "spec": {
          "$id": "sc-rr-lite-parliamentary",
          "name": "Parliamentary Guide",
          "description": "AI provides contextual procedural guidance based on current meeting state",
          "icon_name": "lightbulb",
          "color": "#059669",
          "surfaces": [
            {
              "surface": "MEETING_RUN",
              "position": 3
            }
          ],
          "prompt": "You are an expert parliamentarian assistant using Robert's Rules of Order. Analyze the CURRENT MEETING STATE to provide relevant procedural guidance.\n\n**Your task:**\n1. Review the **Motion Tracker** in the 'Business' agenda item to understand current motions.\n2. Analyze the LAST 2 MINUTES of transcript to understand where the meeting is procedurally.\n3. Determine what procedural options are available based on the current state:\n   - If a motion is pending without a second: explain the need for a second\n   - If discussion is in progress: explain how to call for the question, amend, or table\n   - If a vote was just taken: explain next steps\n   - If no motions are pending: explain how to introduce new business\n\n**Provide contextual guidance:**\n\n📘 **PARLIAMENTARY STATUS**\n\n**Current State**: {Pending motion / Discussion / No pending business / etc.}\n\n**Available Actions**:\n| Action | How to Do It | Requires |\n|--------|--------------|----------|\n| {relevant action} | \"{exact words to say}\" | {any requirements} |\n| ... | ... | ... |\n\n**Quick Reference**:\n• To close debate: \"I call the question\" (requires 2/3 vote)\n• To modify: \"I move to amend by...\" (requires second and majority)\n• To defer: \"I move to table this motion\" (requires second and majority)\n\n**If someone asked a specific question** in the recent transcript, answer that directly with the procedural guidance needed."
        }
      }
    ]
  }
}
