fix(package-index): validate current package contract - #152
Open
Giselle Rogers (gbrogers) wants to merge 1 commit into
Open
fix(package-index): validate current package contract#152Giselle Rogers (gbrogers) wants to merge 1 commit into
Giselle Rogers (gbrogers) wants to merge 1 commit into
Conversation
Eric Smith (motionBuilderEric)
added a commit
that referenced
this pull request
Jul 23, 2026
…ect-time auto-install and self-activating daily sync (#159) * feat(package): add voc-data-pull v0.1.0, auto-installed on VoC platform connect Installer package that pulls raw voice-of-customer data - product reviews, support conversations, and ad comments - from a connected platform into standardized files in the org brain: one file per review/ticket/comment, flat metadata header + body, untouched platform payload preserved in every file (PDEC-9193, PR 1 of 2). - skill/SKILL.md: the pull workflow - resolve the connection path (Pipedream OAuth via integrations proxy, stored secret via secure-fetch, Motion native for Meta ad comments), follow the platform recipe, write files under /agent/brain/data-sources/<platform>/. Hard boundaries: read-only against platforms, bounded pulls (12-month default, page caps), never write into /agent/brain/integrations/<source>/, author_contact nulled pending the PII policy call. - skill/references/platform-recipes.md: per-platform endpoints, pagination, discovery steps, and unified-template field mappings with evidence levels. Judge.me/Gorgias/Intercom live-verified; Trustpilot/Yotpo doc-grounded pending first connects; Junip blocked on a dead key; Okendo/Stamped are secrets-path (no Pipedream app exists); Meta ad comments via motion meta creative-comments. - skill/templates/: copyable review and support-conversation file skeletons (support shape follows the Ramy Brook Gorgias precedent: daily/<date>/ticket-<id>.md, metadata top, full conversation below). - package.json manifest: one directory resource installing the skill to agent_skills/voc-data-pull; installPolicy auto so matching intent installs with no manual step, updatePolicy auto so recipe fixes roll out. - package-index.json: first indexed package. Categories list one integration:<slug> per platform (judge_me, trustpilot, yotpo, junip, gorgias_oauth, intercom, okendo, stamped) because the VM reconciler matches literal connected slugs - no invented family category. - scripts/validate-runneth-package-index.mjs: aligned with the current package-manager contract (package.json manifests, installPolicy, packageManagerVersion 1|2, manifest v2 tasks/workflows, backend-github sources). Same content as #152; whichever merges first rebases clean. - Card files (use-case.json, README.md, marketing.md) included per repo structure; slug added to catalog excluded[] - not a public-site use case. CI note: the fleet-approval gate fires (new auto-installable package) and needs the runneth-fleet-change-approved label after core engineering approval. * refactor(voc-data-pull): move under packages/ per installer package convention * fix(voc-data-pull): resolve review findings - id-keyed ticket paths, honest date-bound claims, PII disclosure, fleet-gate fingerprint * fix(voc-data-pull): render metadata as fenced yaml block instead of frontmatter * feat(voc-data-pull): human-readable file layout - headline, bold-label header, collapsed metadata; drop raw payloads * feat(voc-data-pull): backend-github source + activation package instruction Switch the index entry's package source to backend-github per repo package conventions, so VM artifact fetches route through the backend cache instead of raw GitHub (bump indexRevision to 2026-07-22-01). Add a package_instruction resource (instructions/activation.md) that lands in the agent's standing instructions on install: Runneth offers the first pull when a covered VoC platform is connected and no data-sources pull exists, runs the skill on request, and never starts a pull without user confirmation. Install stages files only; this closes the awareness gap without auto-running anything. * fix(voc-data-pull): date window is the coverage contract - page cap is per-run batching, never a coverage limit * feat(voc-data-pull): add Reddit - integration:reddit category, community_post source type, recipe + template * feat(voc-data-pull): routine-based recurring sync via activation instruction activation.md: routine absence triggers setup - creates voc-sync-<platform> (cron 0 6 * * *), kicks the backfill run, silent-success/delivered-failure delivery, Junip key gate; pulls never run in-conversation. SKILL.md: new Recurring sync runs section owns the incremental window (empty folder = trailing 12 months, else newest created_at minus 2 days, updated_at for tickets), multi-account iteration, disconnect no-op; dropped the confirm-before-starting gate. README updated to match. * fix(voc-data-pull): review fixes - id-keyed contract, per-source write policy, routine routing SKILL.md: the id-keyed filename contract now survives existing folder conventions (adopt surrounding layout, keep id-keyed names); explicit re-pull write policy per source type (reviews skip, tickets overwrite on fresher updated_at, comments/posts overwrite inside the pull window since engagement mutates); user pull requests route through the sync routine; description covers Reddit and community posts. activation.md: routine prompt defers run behavior to the skill's recurring-sync rules instead of restating it; first kick described as a sync run whose window the skill determines. README: drop the stale no-automatic-post-install-trigger gap, describe the header shape directly, point the platform list at the Step 1 table. * fix(voc-data-pull): move output to data-sources/voc/<platform>/ with flat type-prefixed filenames * feat(voc-data-pull): manual install policy, ask-only sync setup installPolicy flips to manual - the team installs per VM (package intent add-optional voc-data-pull + package sync); updatePolicy stays auto so installed copies track main. Setup is strictly manually triggered: the recurring-sync procedure (routine-absence check, routine add with cron 0 6 * * *, first-run kick, Junip gate, never pull in-conversation) moves into SKILL.md and runs only when asked, directly or via an onboarding run - nothing happens just because a platform is connected. The activation instruction slims to a pointer stating the same. Once set up, the daily routine refreshes data on its own. Categories retained for a future auto-install flip.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation