Source profileQuality 85/100

tody-agent/codymaster/skills/cm-google-form/SKILL.md

cm-google-form

Google App Script form-to-sheet integration with auto-retry, toast notifications, and Zalo/contact fallback. Reusable across any static website.

Source repository stars
48
Declared platforms
0
Static risk flags
0
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Connect HTML forms → Google Sheets via Google Apps Script. Auto-retry, toast UI, contact fallback on errors. Zero dependencies, works on any static site.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/tody-agent/codymaster --skill "skills/cm-google-form"
    Safe inspection promptEditorial

    Inspect the Agent Skill "cm-google-form" from https://github.com/tody-agent/codymaster/blob/14cd03c9b12b3087494371e5ccef81005182dcaa/skills/cm-google-form/SKILL.md at commit 14cd03c9b12b3087494371e5ccef81005182dcaa. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      📋 5-Phase Workflow

      🔴 Rule: NEVER skip Phase 1. Always read existing forms first.

      🔴 Rule: NEVER skip Phase 1. Always read existing forms first.
    2. 02

      Phase 1: DISCOVER (Scan & Analyze)

      Goal: Understand what forms exist and what fields they have.

      Search for forms in the project:For each form found, extract:Ask user (Socratic Gate):
    3. 03

      Phase 2: PLAN (Design & Map)

      Goal: Map form fields → Sheet columns → Apps Script params.

      [ ] Apps Script code per sheet[ ] Frontend JS with retry + toast[ ] Toast CSS component
    4. 04

      Phase 3: BUILD (Generate Code)

      See templates/apps-script.js for the full template.

      Always use doPost(e) — NOT doGetAlways wrap in try/catchAlways return JSON with {status: "success"} or {status: "error", message: "..."}
    5. 05

      Phase 4: INTEGRATE (Wire Everything)

      1. Add Toast CSS → Append to main CSS file (e.g., design-system.css) 2. Add Form JS → Add to shared JS file or create js/form-handler.js 3. Update HTML forms: - Add data-form-type="..." attribute - Add onsubmit="window.submitToGoogleSheet(event)" - Add - Ensure all inputs have n…

      Add Toast CSS → Append to main CSS file (e.g., design-system.css)Add Form JS → Add to shared JS file or create js/form-handler.jsUpdate HTML forms:

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score85/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars48SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    tody-agent/codymaster
    Skill path
    skills/cm-google-form/SKILL.md
    Commit
    14cd03c9b12b3087494371e5ccef81005182dcaa
    License
    Not declared
    Collected
    2026-08-04
    Default branch
    main
    View the original SKILL.md

    Google Forms → Sheet Integration Skill

    Connect HTML forms → Google Sheets via Google Apps Script. Auto-retry, toast UI, contact fallback on errors. Zero dependencies, works on any static site.


    🎯 When to Use

    TriggerAction
    User says "create form", "connect Google Sheet"Activate this skill
    User says "form broken", "submit not working"Debug using Phase 4-5
    User says "add new form to page"Start from Phase 2
    User says "form for another website"Start from Phase 1

    📋 5-Phase Workflow

    Phase 1: DISCOVER → Scan forms, identify fields, determine sheet structure
    Phase 2: PLAN → Design sheet columns, map form fields, create deployment plan
    Phase 3: BUILD → Generate Apps Script + Frontend JS + Toast CSS
    Phase 4: INTEGRATE → Wire forms to JS, add CSS, deploy Apps Script
    Phase 5: VERIFY → Test submit, test retry, test error fallback
    

    🔴 Rule: NEVER skip Phase 1. Always read existing forms first.


    Phase 1: DISCOVER (Scan & Analyze)

    Goal: Understand what forms exist and what fields they have.

    Actions:

    1. Search for forms in the project:

      grep -r "data-form-type\|onsubmit\|<form" --include="*.html" .
      
    2. For each form found, extract:

    InfoHow to Find
    Form typedata-form-type attribute
    Fields<input name="...">, <select name="...">
    Submit handleronsubmit attribute
    Page URLFile path
    1. Ask user (Socratic Gate):
      • How many separate Google Sheets? (1 shared sheet or separate?)
      • What columns does each sheet need?
      • Is there a fallback contact channel? (WhatsApp, Messenger, Hotline?)
      • Fallback contact URL (e.g., https://wa.me/15551234567)

    Output: Form Inventory Table

    | # | Form Type | Pages | Fields | Target Sheet |
    |---|-----------|-------|--------|-------------|
    | 1 | massage   | 7     | name, phone, branch, problem, time, package | Sheet Massage |
    | 2 | course    | 1     | name, phone, goal | Course Sheet |
    

    Phase 2: PLAN (Design & Map)

    Goal: Map form fields → Sheet columns → Apps Script params.

    Sheet Column Design

    For each sheet, define columns in order:

    ColumnSourceAlways Include
    Timestampnew Date() — auto✅ Yes
    (form fields)e.parameter.xxxFrom inventory
    Page Sourcee.parameter.url✅ Yes

    Naming Convention

    ElementConvention
    Sheet tab nameData
    Form attributedata-form-type="<type>"
    Hidden URL field<input type="hidden" name="url" value="">
    JS global functionwindow.submitToGoogleSheet

    Deliverables Checklist

    • Apps Script code per sheet
    • Frontend JS with retry + toast
    • Toast CSS component
    • HTML form markup template
    • Deploy instructions
    • Verification test plan

    Phase 3: BUILD (Generate Code)

    3A. Google Apps Script Template

    See templates/apps-script.js for the full template.

    Key rules:

    • Always use doPost(e) — NOT doGet
    • Always wrap in try/catch
    • Always return JSON with {status: "success"} or {status: "error", message: "..."}
    • Column order MUST match sheet.appendRow([...]) order
    • Tab name MUST match SHEET_NAME constant

    3B. Frontend JavaScript

    See templates/form-submit.js for the full template.

    Key features:

    FeatureDetail
    Auto-retry3 attempts, exponential backoff (1s → 2s → 4s)
    Toast UISuccess (green), Error (red), Retrying (amber)
    Phone validationVietnamese format: /^0\d{8,10}$/
    Button states"Submitting..." → "Retrying (X/3)..." → reset
    CORS handlingHandles opaque responses from Apps Script
    FallbackZalo button in error toast
    Auto-dismissSuccess: 6s, Error: 15s, Retrying: 10s

    3C. Toast CSS

    See templates/toast.css for the full template.

    3 variants: --success, --error, --retrying

    3D. HTML Form Markup

    See templates/form-markup.html for examples.

    Required attributes:

    <form data-form-type="TYPE" onsubmit="window.submitToGoogleSheet(event)">
      <input type="hidden" name="url" value="">
      <!-- form fields with name="..." -->
      <button type="submit">Submit Text</button>
    </form>
    

    Phase 4: INTEGRATE (Wire Everything)

    Step-by-step:

    1. Add Toast CSS → Append to main CSS file (e.g., design-system.css)
    2. Add Form JS → Add to shared JS file or create js/form-handler.js
    3. Update HTML forms:
      • Add data-form-type="..." attribute
      • Add onsubmit="window.submitToGoogleSheet(event)"
      • Add <input type="hidden" name="url" value="">
      • Ensure all inputs have name="..." matching Apps Script params
    4. Configure URLs:
      • Replace placeholder URLs in JS with deployed Apps Script URLs
    5. Configure fallback contact:
      • Replace Zalo URL in JS toast with project's contact URL

    Customization Points

    SettingLocationDefault
    Apps Script URLsJS URLS objectplaceholder
    Fallback contactToast Zalo linkhttps://zalo.me/...
    Max retriesfetchWithRetry arg3
    Phone regexValidation block/^0\d{8,10}$/
    Toast auto-dismissshowFormToast timeouts6s/15s/10s
    Success message.then() blockCustomizable
    Error message.catch() blockCustomizable

    Phase 5: VERIFY (Test & Report)

    Test Checklist

    #Test CaseExpectedStatus
    1Submit valid formToast success (green) + Zalo opens
    2Submit invalid phoneToast error "Invalid phone number"
    3Network offline3 retries → Toast error with Zalo button
    4Check Google SheetNew row appears with correct data
    5Button statesDisabled during submit, resets after
    6Toast close buttonToast disappears on click
    7Mobile responsiveToast visible above sticky CTA
    8Multiple forms same pageEach form submits independently

    How to Test Retry

    1. Open DevTools → Network tab
    2. Block domain script.google.com
    3. Submit form → Should see 3 retry attempts
    4. Unblock → Submit again → Should succeed

    Report Template

    ## Form Integration Test Report
    
    **Date:** YYYY-MM-DD
    **Pages tested:** X/Y
    
    | Page | Form Type | Submit | Retry | Fallback | Sheet |
    |------|-----------|--------|-------|----------|-------|
    | index.html | massage | ✅ | ✅ | ✅ | ✅ |
    | khoa-hoc.html | course | ✅ | ✅ | ✅ | ✅ |
    
    **Issues found:** None / [list issues]
    **Resolution:** [fixes applied]
    

    ❌ Anti-Patterns

    ❌ Don't✅ Do
    Use alert() for feedbackUse toast notifications
    No retry on failureAuto-retry 3x with backoff
    Silently failShow error + contact fallback
    Hardcode form URLsUse config object (URLS)
    Skip phone validationValidate before submit
    Forget name attributeEvery input MUST have name
    Use doGet for form submitUse doPost only
    Multiple submit handlersOne shared submitToGoogleSheet

    📑 Templates

    FilePurpose
    templates/apps-script.jsGoogle Apps Script doPost handler
    templates/form-submit.jsFrontend JS with retry + toast
    templates/toast.cssToast notification CSS component
    templates/form-markup.htmlHTML form examples

    🔗 Related Skills

    NeedSkill
    Form UI/UX design@[skills/cm-ux-master]
    SEO for forms@[skills/cm-dockit]
    Form security@[skills/vulnerability-scanner]
    Deployment@[skills/deployment-procedures]

    Alternatives

    Compare before choosing

    Computed 976

    mgiovani/cc-arsenal

    team-review

    Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r

    Computed 9381,553

    addyosmani/agent-skills

    browser-testing-with-devtools

    Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.

    Computed 9239,896

    vercel-labs/agent-browser

    dogfood

    Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to "dogfood", "QA", "exploratory test", "find issues", "bug hunt", "test this app/site/platform", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.

    Computed 921,315

    daymade/claude-code-skills

    frontend-visual-qa

    Audits already-rendered web, landing-page, HTML deck/slide, browser tool/game, dashboard/admin, design-system, and desktop UIs using real-browser or native-app journeys, inspected screenshots, DOM geometry, responsive or projection viewports, and a bundled Playwright sweep. Use after UI implementation to find typography, wrapping, overlap, overflow, responsive, route, overlay, map, transient-state, data-visualization, browser-output, file-dialog, PDF/print, or Electron-shell defects, or to compa