Skip to content

stephen-maina/marketing-iq

v0.2.0

Evidence-led Launch decisions and Field activation using your existing host connector.

Marketing IQ plugin

Marketing IQ helps you assess launch readiness, choose an audience/proposition, and draft an invitation, exactly three talk points and a follow-up. It produces evidence-qualified internal review drafts, not publication approval. The 0.2.0 source also adds a separate campaign/event/measurement planning companion, optional project briefs and a curated extension catalogue. This version is unreleased; installed copies do not change when source is edited.

Install and start

Requirements: GitHub Copilot CLI with Agent Plugins 1.0 support, an accessible Node >=22.18.0 executable, and Copilot access. Running the plugin needs no npm install, TypeScript compiler or .NET runtime/SDK. Repository visibility does not grant Copilot access or permission to read your source data.

copilot plugin marketplace add stephen-maina/marketing-iq
copilot plugin install marketing-iq@marketing-iq-plugins
copilot plugin list --json
copilot --agent marketing-iq:marketing-iq

The repository supplies .github\plugin\marketplace.json. Both local-path and private remote registration, catalog discovery and marketplace-name installation were exercised with Copilot CLI 1.0.103 in isolated CLI homes. Local registration produced a live link; remote registration produced an installed copy. The three skills then shipped were discovered from that installed cache, and downloaded helpers ran without npm restore. Those observations used the repository while it was private; they do not establish a fresh user's public-marketplace or live-source journey. An invocation from the remote-installed copy also produced the expected missing-exposed-connector guidance; it did not retrieve live SharePoint content.

The earlier direct repository install (copilot plugin install stephen-maina/marketing-iq:plugins/marketing-iq) was exercised with CLI 1.0.98, which warned that direct installs were deprecated. Prefer the marketplace path or the clone-and-load alternative below.

Start the last command in the workspace where you want to keep your decisions, not the installed plugin directory. In an interactive session, /agent lets you check/select the Marketing IQ agent; /skills list shows discovered skills. The current source ships four: shared, Launch, Field and campaign planning. Restart an existing session after installation. Check the selected component's location if a workspace or personal copy has the same name; installation alone does not prove which copy a session selected.

Alternatively, clone and load the ready-to-run plugin:

gh repo clone stephen-maina/marketing-iq
copilot --plugin-dir .\marketing-iq\plugins\marketing-iq --agent marketing-iq:marketing-iq

Run that command from your own working folder, adjusting the plugin directory to the clone's actual location. Compiled JavaScript is committed for consumers. Updating an installed plugin uses copilot plugin update marketing-iq@marketing-iq-plugins; this fetches and installs an update, so run it only for the intended approved source. A locally installed copy must be installed again after rebuilding. --plugin-dir loads its directory without installing. A marketplace catalog is supplied; no MCP server, sign-in service or background daemon is added. The plugin agent is namespaced as marketing-iq:marketing-iq; the bare marketing-iq name is for the workspace agent, not this native installation.

For setup-only inspection, read the discovered installed instructions first. The optional Inspect-Installation.mjs in the shared skill's scripts directory checks the fixed installed entrypoints against installation.json. It reports version and hashes, not publisher authenticity, discovery, tool exposure, authentication or live source access. It is not a workaround for a denied read. On October 27, 2026 a clean-consumer selected-agent setup run stopped at the generated shared SKILL.md with Sandbox policy denial. This is an observation about that run, not proof that every current installation fails. Compare the selected agent and actual instruction origin before applying its diagnosis to another configuration. For that denied boundary, the CLI administrator must resolve the exact path through supported setup before a retry. See MarketingIQ_Host_Acceptance.md in the source repository for the protocol and exact observation.

Give it a source and a task

For client-owned connector configuration, see the installed shared skill's references\client-profiles.md. We maintain the template; client administrators review and own their local profile, connector setup and access. The included examples\marketing-iq-workiq.agent.md can be copied to the client's .github\agents and selected as marketing-iq-workiq; it reuses the installed skills without invoking the packaged agent. It targets the existing hosted WorkIQ retrieve/fetch contract, not every WorkIQ distribution. Profile discovery alone does not prove compatible tools or live access. Updating the plugin does not update this independent client copy. Review/merge the new example's routing and contracts into a customized profile; do not overwrite its approved tools or replace it automatically.

There is no hidden tenant or source folder. Supply the source location in your message, together with the task:

Using WorkIQ, assess Harbor's internal-preview readiness for service owners in Europe. Use only this source folder: https://your-tenant.example/sites/Harbor/Planning. Compare a readiness briefing with a product demo.

WorkIQ must already be installed, authenticated and exposed in that selected agent context. A URL establishes scope, not access or authority. The default uses scoped SharePoint documents, with relevant Email/Meetings context only when needed. Packaged source routes are intentionally empty; private mappings are not redistributed. Ordinary users can supply a URL without editing any files.

Before selecting a route, the agent inspects the tool names and schemas actually exposed by its host. WorkIQ is a preference, not a hardcoded tenant or proof of availability. Without an explicit connector choice, a unique exposed compatible connector can be selected; ambiguous choices require clarification. No compatible exposed tool produces setup guidance, not a claim that a server is uninstalled. Use your host's normal connector setup and authentication, ensure the selected agent can access it, then start a fresh session and retry the same source scope. This does not authorize a provider switch after a selected route fails or denies access.

For another connector, install/configure it using your host's normal procedure, then explicitly name the adapter ID, exposed retrieval tool and source scope. The connector retrieves; an adapter maps its actual observed results to the closed handoff in skills\marketing-iq\references\adapters.md. Marketing IQ admits the evidence, reasons over it, and requests a separate model review. examples\adapter-template.mjs is a no-network mapping example, not a connector installer or executable registry. The selected Copilot agent's allow-list may not expose your custom connector: report that gap, or have the operator provide an explicitly reviewed host-native configuration. Never bypass a denial.

For a concrete alternative, examples\github-contents-adapter.mjs maps a documented GitHub Contents API file response plus an explicit tool/scope observation to the same handoff. Its companion fixture is visibly synthetic. See references\adapters.md for the input contract and stdin invocation. This example does not install a GitHub connector or establish live retrieval.

To try the fictional included example instead of connecting enterprise data:

Explicitly use the bundled synthetic local-file example, not WorkIQ or live sources. Assess Harbor readiness for service owners in Europe and propose a readiness briefing. Keep the result labelled synthetic and leave it unsaved.

The agent resolves the example and helpers from the installed skill's location. You do not need to copy .github into your workspace. The local-file example is synthetic only, not general ingestion of arbitrary production files.

Interaction and saved direction

Source intake and optional preferences

If you have not chosen a source or connector for the current task, Marketing IQ asks which folder/document/path or connector/MCP server to use. You need not supply both or know exact tool names. A location still needs a compatible exposed connector; naming a connector alone does not authorize an unrestricted search. For a topic-only request, the plugin offers bounded discovery for confirmation.

When the host actually supplies an eligible remembered selection, the plugin shows it and asks whether it is sufficient for this request before retrieving. A current explicit choice takes precedence without a redundant confirmation. Clarifications retain the active task's confirmed choices and consumed budgets.

Explicit reusable preferences may be saved using the CLI's native memory tools only when those tools, the requested scope and the content are permitted. The plugin asks whether an ambiguous preference is project-specific or user-wide; it never silently broadens the scope. Private source addresses, credentials, identity-bearing paths, source evidence and accepted direction are not stored as preference memory. A safe connector preference does not remember its folder.

Copilot CLI's /memory command manages memory status/enablement; it is not a plugin write API. If native writing is unavailable, disabled or cannot support the requested scope, Marketing IQ reports that limitation and uses session-only choices. The packaged agent and example WorkIQ profile do not request a native memory writer. The plugin does not change permissions, enable memory, install a memory service or maintain a fallback preference file.

A save receipt, later host-supplied recall and confirmation for today's task are three separate observations. Saving never proves future automatic recall. See the shared references\source-preferences.md for the complete contract and GitHub's Copilot Memory documentation for current host behavior and account controls.

Accepted direction

For Launch, review the recommendation and evidence gaps. Choosing "save" starts preparation, not a write. The agent shows the exact direction, scope, validity, ID/version and replacement effect; only your confirmation permits saving. Records live in your working folder's local-data\launch-decisions, not the plugin cache. Source bodies and whole assessments are not saved there.

In a fresh session in the same workspace, ask for an invitation using your accepted direction and give the product, topic, audience, geography and current source. The agent discovers an applicable record through the decision helper; it does not scan previous conversations. A current proposal also works without a saved record. Unknown event logistics become placeholders. No direction or no admitted evidence produces an explicit blocker, not invented copy.

Readable answers and session-local canonical diagnostic JSON are separate from saved direction. Diagnostics, when the host supports their safe creation, do not approve or accept anything. Independent model review is likewise not product, execution or publication approval.

Brief context and marketer feedback

You can add your objective, desired attendee takeaway/next action, tone, language, brand terms and channel/length constraints to the same brief. These are optional instructions, not product evidence; unknown details need not trigger a long form. The workflow targets decision-relevant evidence questions, separates planning and positioning from product proof, and does not count equivalent DOCX/PDF copies as independent corroboration. Three admitted sources remain the limit.

An optional user-selected project brief uses the installed shared skill's examples\marketing-brief.template.json and references\marketing-context.md. Its schema version and user revision are different; confirmation makes it project context, not product truth or accepted direction. Preview the exact destination, revision and delta before any permitted native data-only save. Without that writer, leave the brief unsaved; do not create a shell-based fallback or treat it as CLI memory.

Customer research distinguishes independent participants/accounts from document counts and preserves contradictory signals. Focused edits retain unaffected wording and the user's voice. Unsupported claims get the strongest supported alternative plus the precise missing proof, not invented guarantees.

The plugin also supplies marketing-iq:marketing-iq-marketer, a read-only AI domain adviser. A coordinator supplies the actual brief, exact proposed/delivered copy and original admitted passages inline, following the shared skill's references\marketer-review.md. The adviser reports evidence accuracy and marketing usefulness separately and suggests impact-ranked changes. It cannot retrieve, save, send or approve, and it does not replace independent semantic review. Suggested edits require the normal review before delivery.

Actual marketer feedback still matters: record what decision the result helped, what needed editing and what response would show the CTA worked. A manually observed response is different from a proposed measure; AI review is not human acceptance, demonstrated time savings or campaign success. examples\marketing-feedback.template.json separates proposed measures from actual feedback/results. It is a blank template, not a success report or an automatic memory write. Promote a lesson only after verifying its scope and reviewing the relevant regression.

Campaign and measurement planning

Ask for a campaign, event sequence, channel deliverables or measurement plan using your current brief. The planning companion produces a six-section internal planning proposal, not a Launch readiness decision, Field canonical result or publication approval. It does not retrieve sources or automatically save/export. Missing event details and measurement values remain unknown; proposed targets are not actual outcomes.

For a mixed request, Launch readiness takes precedence, then Field copy, then planning. Deferred deliverables are stated rather than silently dropped. Evidence-backed claims or accepted-record discovery use the existing Launch/ Field workflow separately. Planning has no JSON-only contract.

Optional extensions

The shared skill's references\optional-extensions.json lists five optional upstream choices: copywriting, customer-research, events, analytics and ab-testing. Each records its purpose, immutable revision, complete skill assets, operational requirements and adaptation cautions.

They are not bundled or installed, and runtime compatibility is unverified. references\optional-extensions.md explains exact-scope approval, complete-tree inspection, license/notices, project-scoped installation, shadowing checks and separate real-task acceptance. A referenced tool or MCP server is not provided by copying a skill. Do not bulk-install the collection or use extensions to override Marketing IQ's evidence, output, review or approval contracts.

Safe packet files

Hosts with an already permitted native data-only file writer can stage a review packet in session storage, read it back, then use these file inputs:

node "<shared-skill>\scripts\Test-ReviewPacket.mjs" --packet-file "<absolute-packet.json>"
node "<shared-skill>\scripts\Save-ResultArtifact.mjs" --directory "<session-files>" --packet-file "<absolute-final-reviewed-packet.json>"

The export validates the whole packet and writes only its canonical candidate; it does not replace the separate semantic reviewer. See references\packet-transport.md for staging, exact review pairing and read-back. Do not embed source or draft bodies into shell commands to manufacture stdin. The selected native Marketing IQ agent's current tool profile has no native file writer. File-input support does not remove that host capability limit, and the plugin does not broaden permissions to hide it.

Hosts and limits

This distribution uses Agent Plugins 1.0: portable skills and a Copilot-specific agent in com.github.copilot\agents. Copilot CLI is the exercised host. Another Agent Plugins-compatible host may load the skills, but its tool mapping, safe input transport, separate reviewer and invocation must be verified there. Do not assume another CLI loads the Copilot-specific agent.

The plugin does not install/authenticate connectors, grant access, guarantee model compliance, send invitations or publish marketing material. It cannot turn synthetic evidence into live product truth. See docs\integration\MarketingIQ_Plugin_Demonstration.md in the source repository for actual model-run results and remaining gaps. Remote installation, clean consumer skill discovery and downloaded Node helper execution were exercised separately; these do not establish live connector access or model compliance.

Development

Canonical instructions remain in .github\skills and .github\agents. plugins\marketing-iq is generated: do not edit those copies directly.

npm ci --ignore-scripts
npm run check:generated
npm test
npm run test:plugin
npm run test:package

npm run build:plugin compiles the existing Node helpers and generates only allowlisted native components, rewrites asset-path notation for installation, and substitutes an empty source registry. It leaves decision stores relative to the consumer workspace. Run the existing alternative workspace archive checks with npm run test:package.

npm run build generates runtime JavaScript and version metadata from the root package version. npm run check:generated compiles in a temporary directory and compares the runtime and native plugin without repairing drift. Run it before tests, since their build steps regenerate outputs. Canonical edits require npm run build:plugin; commit the matching generated assets with those edits.

The Windows/Linux validation workflow pins its Node/actions versions and runs the local suites. The release workflow requires a tag matching the package version, packages the workspace/native plugin with SHA-256 receipts and creates a draft prerelease for human review. It does not approve a final release or prove live host operation. The validation workflow passed on Windows and Ubuntu in run 40500565113 at commit 36d9130c763afc481840ffe313688da487e50e83; the release workflow remains unexercised. Update CHANGELOG.md, review generated drift, validate and obtain publication approval before pushing a release tag.

Developer tests check deterministic helper/package behavior; they are distinct from fresh-model demonstrations. The optional C# parity suite needs the legacy executable and is not a consumer or ordinary Node test prerequisite. No open-source license is currently included.