Conversation
Synced from ~/.cursor/ with CLAUDE.md generation and skills symlink for Claude Code compatibility. Includes setup.sh for deploying to new machines.
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.
Complete agent-assisted development workflow for Edge repositories — slash skills with companion scripts, coding standards, review standards, and the author skill.
Installation
1. Set the required env var in your
~/.zshrc:2. Install files into
~/.cursor/:3. Verify prerequisites:
ghCLI —gh auth loginjq—brew install jqASANA_TOKENenv var (Asana scripts only)Table of Contents
Architecture
Separation of concerns:
.md) — Define agent workflows: steps, rules, edge cases. Invoked explicitly via/command.SKILL.md) — Primary workflow units invoked with/skill-name(or selected by context)..sh,.js) — Handle deterministic operations: API calls, git ops, JSON processing. Skills call scripts; scripts never call skills..mdc) — Persistent coding standards loaded on-demand by file type or command step. Two classes: editing standards (loaded when writing code) and review standards (loaded during PR review).All GitHub API operations use
ghCLI (gh api,gh api graphql,gh pr). No rawcurl+$GITHUB_TOKEN.User-specific configuration is driven by the
GIT_BRANCH_PREFIXenv var — set once in.zshrc, used by scripts for branch naming ($GIT_BRANCH_PREFIX/feature-name) and PR discovery. No hardcoded usernames.Skills (Slash Skills)
Core Implementation
/im/one-shot/asana-plan→/im→/pr-createwith default Asana attach/assign/pr-create/dep-pr/changelogPlanning and Context
/asana-plan/task-review/qReview and Landing
/pr-review/pr-address/pr-landAsana and Utility
/asana-task-update/standup/chat-audit/convention-sync~/.cursorchanges with theedge-conventionsrepo and update PR description/authorCompanion Scripts
PR Operations
pr-create.shgh pr createpr-address.shgh apiREST + GraphQLgithub-pr-review.shgh pr view+gh apiRESTgithub-pr-activity.shgh api graphqlPR Status Dashboard
pr-status-gql.shgh api graphqlpr-status.shgh apiRESTpr-watch.shPR Landing Pipeline (
/pr-land)These scripts run sequentially. Each handles one phase of the landing workflow:
pr-land-discover.sh$GIT_BRANCH_PREFIX/*PRs with approval statusgh api graphqlquerypr-land-comments.shgh api graphqlper PRpr-land-prepare.shverify-repo.shprepare/tsc/lint/testpr-land-merge.shgh apiRESTpr-land-publish.shConflict handling is fully scripted:
Chat Analysis
cursor-chat-extract.jsAsana Integration
asana-get-context.shasana-task-update.shasana-create-dep-task.shasana-whoami.shBuild & Deps
lint-commit.sh--fix, localize, graduate warnings, and report effective commit scope before commitlint-warnings.sheslint --fix, then summarize any remaining lint findings with matched fix patternsinstall-deps.shupgrade-dep.shSync & Portability
convention-sync.sh~/.cursor/files with the edge-conventions repotool-sync.shport-to-opencode.sh.mdc/.mdfiles to OpenCode-compatible JSON + MD mirrorsDependency Graph
Skill → Skill
Skills with no skill dependencies:
/asana-task-update/task-review/q/pr-review/pr-address/pr-land/standup/chat-audit/changelog/convention-syncFull Skill/Script Dependency Graph
Top-to-bottom organization: skill layer, skill-specific scripts, shared scripts.
graph TD subgraph skillLayer [Skills] im["/im"] oneShot["/one-shot"] asanaPlan["/asana-plan"] taskReview["/task-review"] depPr["/dep-pr"] prCreate["/pr-create"] asanaTaskUpdate["/asana-task-update"] prLand["/pr-land"] prReview["/pr-review"] prAddress["/pr-address"] standup["/standup"] chatAudit["/chat-audit"] conventionSync["/convention-sync"] author["/author"] q["/q"] changelog["/changelog"] end subgraph skillScripts [Skill Scripts] prCreateSh["pr-create.sh"] prAddressSh["pr-address.sh"] prReviewSh["github-pr-review.sh"] depTaskSh["asana-create-dep-task.sh"] asanaTaskUpdateSh["asana-task-update.sh"] prLandDisc["pr-land-discover.sh"] prLandCmts["pr-land-comments.sh"] prLandPrep["pr-land-prepare.sh"] prLandMerge["pr-land-merge.sh"] prLandPublish["pr-land-publish.sh"] prLandExtract["pr-land-extract-asana-task.sh"] standupAsana["asana-standup.sh"] standupGh["github-pr-activity.sh"] chatExtract["cursor-chat-extract.js"] conventionSyncSh["convention-sync.sh"] generateClaude["generate-claude-md.sh"] lintWarn["lint-warnings.sh"] end subgraph sharedScripts [Shared Scripts] lintCommit["lint-commit.sh"] verifyRepo["verify-repo.sh"] asanaGetContext["asana-get-context.sh"] asanaWhoAmI["asana-whoami.sh"] installDeps["install-deps.sh"] edgeRepo["edge-repo.js"] end oneShot --> asanaPlan oneShot --> im oneShot --> prCreate asanaPlan --> taskReview im --> asanaPlan depPr --> prCreate prCreate --> asanaTaskUpdate author --> conventionSync prCreate --> prCreateSh prCreate --> verifyRepo prCreate --> asanaTaskUpdateSh im --> lintWarn im --> lintCommit im --> verifyRepo im --> installDeps depPr --> depTaskSh depPr --> asanaGetContext asanaTaskUpdate --> asanaTaskUpdateSh taskReview --> asanaGetContext prAddress --> prAddressSh prAddress --> lintCommit prReview --> prReviewSh prLand --> prLandDisc prLand --> prLandCmts prLand --> prLandPrep prLand --> prLandMerge prLand --> prLandPublish prLand --> prLandExtract prLand --> asanaTaskUpdateSh prLand --> verifyRepo standup --> standupAsana standup --> standupGh chatAudit --> chatExtract conventionSync --> conventionSyncSh conventionSync --> generateClaude depTaskSh --> asanaWhoAmI depTaskSh --> asanaTaskUpdateSh asanaTaskUpdateSh --> asanaWhoAmI standupAsana --> asanaWhoAmI prLandPrep --> edgeRepo prLandMerge --> edgeRepo prLandPublish --> edgeRepoShared Module:
edge-repo.jsedge-repo.jseliminates duplication across thepr-land-*scripts. Exports:getRepoDir(repo)~/git/,~/projects/,~/code/)getUpstreamBranch(repo)origin/developfor GUI,origin/masterfor everything elserunGit(args, cwd, opts)spawnSyncwrapper withGIT_EDITOR=trueparseConflictFiles(output)isChangelogOnly(files)runVerification(repoDir, baseRef, opts){requireChangelog: true})ghApi(endpoint, opts)gh apiwrapper with method, body, paginate, jq supportghGraphql(query, vars)gh api graphqlwrapper with typed variable injectionRules (
.mdcfiles)typescript-standards.mdc.ts/.tsxfilessimple-selectorsrule, descriptive variable names, biggystring arithmetic)review-standards.mdc/pr-reviewcommandload-standards-by-filetype.mdcfix-workflow-first.mdcanswer-questions-first.mdc?in user messages → answer before acting; loads active command context to evaluate workflow gapsno-format-lint.mdceslint-warnings.mdc.ts/.tsxfilesEditing vs. review separation:
typescript-standardscontains rules for writing code (preferuseHandler, useInteractionManager, descriptive variable names, biggystring for numeric calculations).review-standardscontains diagnostic patterns for catching bugs during review (nulltokenIdfallback, stack trace preservation, module-level cache bugs, etc.). Both are loaded together during/pr-review; onlytypescript-standardsis loaded during editing.Author Skill
author/SKILL.mdscripts-over-reasoning,gh-cli-over-curl, dependency-audit requirements before script add/update/remove, and convention-sync/CLAUDE sync post-authoring behavior.Design Principles
ghCLI overcurl— All GitHub API calls usegh api/gh api graphql. Handles auth, pagination, API versioning automatically.edge-repo.jsrather than duplicated across scripts.<goal>,<rules>,<step>) for reliable LLM instruction-following.GIT_BRANCH_PREFIXenv var, set once in.zshrc.eslint-warnings.mdc) instead of having the agent crawl/grep for information repeatedly. Pre-indexed knowledge reduces tool calls and context consumption.review-standards.mdc, addressed warnings updateeslint-warnings.mdc, and chat audits surface rule gaps. Each cycle reduces repetitive context gathering by the agent and repetitive review by humans.