| name | Dayarc Add Connector |
| description | Conversationally configure a new signal source connector (Jira, ADO, Linear, Slack, etc.), generate a custom COLLECT skill, and register it in config.json. |
When to Use
Trigger this skill when the user says anything like:
- "I need to connect Jira"
- "Add a connector for ADO / Linear / Slack"
- "Set up Jira integration"
- "I want Dayarc to check my Jira tickets"
- "Connect {tool} with requirements …"
Do NOT trigger this skill for the built-in work-iq or github connectors — those are pre-configured.
Overview
This skill has five phases:
- Collect — understand what the user needs from this tool
- Generate — produce a custom COLLECT skill tailored to those requirements
- Install — write the skill file to
~/.copilot/skills/ (upgrade-safe location)
- Register — update
mcp.json + config.json so the COLLECT step uses it
- Confirm — show the user what was configured and what to expect in their briefs
Phase 1: Collect Requirements
Ask the following questions one at a time. Stop asking if the user provides answers upfront.
1a. Tool name
If not already clear from the user's request, confirm: "Which tool are we connecting — Jira, Azure DevOps, Linear, Slack, or something else?"
1b. MCP server package
Ask: "What npm (or pip/Docker) package provides the MCP server for {tool}? For example, @modelcontextprotocol/server-jira."
For common tools, suggest defaults:
| Tool | Suggested MCP package |
|---|
| Jira | @modelcontextprotocol/server-jira |
| Azure DevOps | @modelcontextprotocol/server-azure-devops |
| Linear | @modelcontextprotocol/server-linear |
| Slack | @modelcontextprotocol/server-slack |
If the user doesn't know, tell them to check modelcontextprotocol/servers or ask the tool's community.
1c. Signal categories
Ask: "What should Dayarc collect from {tool}? Choose all that apply:"
Present as a numbered list:
assigned_items — open tasks/tickets assigned to you (→ AM Today's Plan)
notifications — new @mentions, review requests, assignments (→ AM Today's Plan + Signals)
flagged_items — items you've starred or prioritized (→ AM Today's Plan)
sent_activity — work you've done: comments, transitions, created items (→ PM What I Did)
recent_docs — recently edited documents or wikis (→ PM What I Did)
calendar — meetings or events (→ AM/PM calendar section)
saved_items — items you've bookmarked or saved for later (→ AM Today's Plan)
Accept numbers, names, or a mix. Confirm selected categories before continuing.
1d. User identity
Ask: "What is your username or email address on {tool}?" (Used to scope queries to your own activity and @mentions.)
If the tool may have multiple accounts (e.g., personal + work), ask for all of them.
1e. Scope filters (optional)
Ask: "Are there specific projects, boards, repos, or spaces to focus on? Or should Dayarc check everything you have access to?" (If everything, leave project_filter empty.)
1f. Custom requirements (optional)
Ask: "Any other requirements? For example: 'only high-priority bugs', 'only issues in sprint', 'include status change notifications', etc."
If the user says none or skips, continue.
1g. MCP server credentials
Ask: "What environment variables or auth does the {tool} MCP server need? (e.g., API token, URL, email)"
For each credential: do NOT record the actual values here — just record the variable names (e.g., JIRA_URL, JIRA_API_TOKEN). Tell the user: "I'll add placeholder entries to mcp.json. You'll need to fill in the actual values there."
Phase 2: Generate the COLLECT Skill
Generate a SKILL.md file content using the template below. Fill in all {placeholders} from the information collected in Phase 1.
Important: The template below uses {FOR EACH ...} / {END FOR EACH} / {IF ...} / {END IF} as generation directives. Expand these into concrete markdown sections for this specific connector. Do not write template syntax into the output file — produce plain markdown that a human (or the agent) can read and execute directly.
---
name: Collect {Tool} Signals
description: Fetch {tool} signals for Dayarc COLLECT step. Generated by dayarc-add-connector on {today's date}.
---
## When to Use
Invoked by Dayarc's COLLECT step for the `{tool-lowercase}` connector when `config.json` declares `"skill": "dayarc-connect-{tool-lowercase}"`.
## Input
```json
{
"connector": "{tool-lowercase}",
"provides": {provides-array-json},
"config": {config-object-json},
"lookback": "today | 7 days",
"since_timestamp": "ISO 8601 datetime"
}
Output
Return a JSON array of normalized signals. Each signal must follow this shape:
{
"description": "One-sentence description of the signal",
"source_breadcrumb": "URL, ticket ID, or thread subject — never blank",
"timestamp": "ISO 8601 datetime",
"category": "{category}",
"connector": "{tool-lowercase}"
}
Instructions
Use the {tool-lowercase} MCP server tools to collect signals. Apply config for scoping.
{FOR EACH selected signal category, emit a section like:}
{category-name}
{category-description}
Query: {natural-language or structured query tailored to user's requirements, project_filter, username, and custom requirements}
{END FOR EACH}
Scoping rules:
- Username/identity:
{config.username} {or {config.usernames} if multiple}
{IF project_filter}- Projects/boards/spaces: restrict to {config.project_filter}{END IF}
{IF notification_reasons}- Notification types: {config.notification_reasons}{END IF}
{IF custom_requirements}- Additional filters: {custom_requirements}{END IF}
Normalization:
- For each result, write a one-sentence
description of what the item is and what action (if any) is needed.
- Set
source_breadcrumb to the item's URL if available; otherwise use the ticket/issue key (e.g., PROJ-1234), thread subject, or channel name.
- Set
timestamp to the item's last-updated or created time.
- Set
category to the matching category from the provides list above.
- Set
connector to "{tool-lowercase}".
Return all results as a flat JSON array. Omit results with no actionable signal. Max 20 items per category.
Adapt the per-category instructions to the user's custom requirements. For example:
- "only high-priority bugs" → add `priority = High AND issuetype = Bug` to the assigned_items query
- "only issues in sprint" → add `sprint in openSprints()` to the JQL
- "include status change notifications" → add `status_change` to the notification query
---
## Phase 3: Install the Skill
### 3a. Determine the skill path
```powershell
$skillDir = Join-Path $HOME ".copilot\skills\dayarc-connect-{tool-lowercase}"
New-Item -ItemType Directory -Path $skillDir -Force
$skillPath = Join-Path $skillDir "SKILL.md"
3b. Write the skill file
Write the generated SKILL.md content from Phase 2 to $skillPath.
Confirm: "✅ Skill written to ~/.copilot/skills/dayarc-connect-{tool-lowercase}/SKILL.md"
Upgrade safety: This file lives in ~/.copilot/skills/ under a name that is not part of the Dayarc agent package. Dayarc upgrades only overwrite files sourced from the agent package — your generated skill will not be touched by upgrades.
Phase 4: Register the Connector
4a. Find and update mcp.json
Detect the correct mcp.json path:
# Plugin install
$pluginMcp = Get-ChildItem -Path (Join-Path $HOME ".copilot\installed-plugins") -Filter "mcp.json" -Recurse -ErrorAction SilentlyContinue |
Where-Object { (Split-Path $_.DirectoryName -Leaf) -eq "dayarc" -or (Get-Content (Join-Path $_.DirectoryName "plugin.json") -ErrorAction SilentlyContinue | ConvertFrom-Json).name -eq "dayarc" } |
Select-Object -First 1
# Git clone
$cloneMcp = Join-Path $HOME ".dayarc-agent\mcp.json"
Use the first that exists. Read the current JSON, add the new server entry under mcpServers, and write it back:
"{tool-lowercase}": {
"command": "{mcp-command}",
"args": {mcp-args-json},
"env": {
"{CREDENTIAL_VAR_1}": "REPLACE_ME",
"{CREDENTIAL_VAR_2}": "REPLACE_ME"
}
}
Remind the user: "⚠️ Replace the REPLACE_ME values in mcp.json with your actual credentials before running a brief."
4b. Update config.json
Read ~/Documents/dayarc/config.json. If the connectors array does not exist, create it with the default built-in entries first:
[
{ "name": "work-iq", "provides": ["sent_activity", "flagged_items", "saved_items", "calendar", "recent_docs"] },
{ "name": "github", "provides": ["sent_activity", "notifications", "assigned_items"] }
]
Add the new connector entry:
{
"name": "{tool-lowercase}",
"provides": {provides-array-json},
"skill": "dayarc-connect-{tool-lowercase}",
"config": {config-object-json},
"mcp": {
"command": "{mcp-command}",
"args": {mcp-args-json},
"env_vars": {credential-var-names-array}
}
}
The mcp field stores the server config (without secret values — only variable names in env_vars) so that dayarc-upgrade can re-apply the MCP entry to mcp.json after an upgrade.
Write the updated config back via dayarc-memory.
Phase 5: Confirm
Show the user a summary:
╔══════════════════════════════════════════════╗
║ {Tool} connector configured ✅ ║
╚══════════════════════════════════════════════╝
Skill: ~/.copilot/skills/dayarc-connect-{tool}/SKILL.md
Config: ~/Documents/dayarc/config.json → connectors["{tool}"]
MCP server: mcp.json → mcpServers["{tool}"]
Signals added to your briefs:
{FOR EACH selected category}
• {category}: {brief description of what will appear}
{END FOR EACH}
⚠️ Action required: Fill in your credentials in mcp.json
({credential-var-names})
To test: say "preview PM brief" or "preview AM brief"
To remove this connector: say "remove {tool} connector"
Edge Cases
- Connector already exists: If
config.json already has an entry with name: "{tool}", tell the user and ask if they want to reconfigure it (overwrite) or cancel.
- Unknown MCP package: If the user doesn't know the MCP server package, generate the skill with a placeholder MCP server name and tell the user to update
mcp.json manually once they find the right package.
- Skill file already exists: If
~/.copilot/skills/dayarc-connect-{tool}/SKILL.md already exists, ask the user if they want to overwrite it.