@thierrynakoa/fire-flow 12.2.1 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CREDITS.md +25 -0
- package/DOMINION-FLOW-OVERVIEW.md +182 -38
- package/README.md +399 -455
- package/TROUBLESHOOTING.md +264 -264
- package/agents/fire-debugger.md +54 -0
- package/agents/fire-executor.md +1610 -1033
- package/agents/fire-fact-checker.md +1 -1
- package/agents/fire-planner.md +85 -17
- package/agents/fire-project-researcher.md +1 -1
- package/agents/fire-researcher.md +4 -22
- package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
- package/agents/fire-reviewer.md +552 -499
- package/agents/fire-verifier.md +114 -19
- package/bin/cli.js +18 -101
- package/commands/fire-0-orient.md +2 -2
- package/commands/fire-1a-new.md +50 -15
- package/commands/fire-1c-setup.md +33 -5
- package/commands/fire-1d-discuss.md +87 -1
- package/commands/fire-2-plan.md +556 -527
- package/commands/fire-3-execute.md +2046 -1356
- package/commands/fire-4-verify.md +975 -906
- package/commands/fire-5-handoff.md +46 -5
- package/commands/fire-6-resume.md +2 -31
- package/commands/fire-add-new-skill.md +138 -19
- package/commands/fire-autonomous.md +14 -2
- package/commands/fire-complete-milestone.md +1 -1
- package/commands/fire-cost.md +179 -183
- package/commands/fire-debug.md +1 -6
- package/commands/fire-loop-resume.md +2 -2
- package/commands/fire-loop-stop.md +1 -1
- package/commands/fire-loop.md +2 -15
- package/commands/fire-map-codebase.md +1 -1
- package/commands/fire-migrate-database.md +548 -0
- package/commands/fire-new-milestone.md +1 -1
- package/commands/fire-reflect.md +1 -2
- package/commands/fire-research.md +142 -21
- package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
- package/commands/fire-scaffold.md +297 -0
- package/commands/fire-search.md +1 -2
- package/commands/fire-security-scan.md +483 -484
- package/commands/fire-setup.md +359 -0
- package/commands/fire-skill.md +770 -0
- package/commands/fire-skills-diff.md +506 -506
- package/commands/fire-skills-history.md +388 -388
- package/commands/fire-skills-rollback.md +7 -7
- package/commands/fire-skills-sync.md +470 -470
- package/commands/fire-test.md +5 -5
- package/commands/fire-todos.md +1 -1
- package/commands/fire-update.md +5 -5
- package/commands/fire-validate-skills.md +282 -0
- package/commands/fire-vuln-scan.md +492 -493
- package/hooks/run-hook.sh +8 -8
- package/hooks/run-session-end.sh +7 -7
- package/hooks/session-end.sh +90 -90
- package/hooks/session-start.sh +1 -1
- package/package.json +4 -24
- package/plugin.json +7 -7
- package/references/autonomy-levels.md +235 -0
- package/references/behavioral-directives.md +95 -3
- package/references/blocker-tracking.md +1 -1
- package/references/circuit-breaker.md +93 -2
- package/references/context-engineering.md +227 -9
- package/references/honesty-protocols.md +70 -1
- package/references/issue-to-pr-pipeline.md +149 -150
- package/references/metrics-and-trends.md +1 -2
- package/references/research-improvements.md +4 -108
- package/references/sdlc-mapping.md +73 -0
- package/references/state-machine.md +151 -0
- package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
- package/skills-library/SKILLS-INDEX.md +57 -558
- package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
- package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
- package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
- package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
- package/skills-library/_general/automation/settings-gui-generator.md +172 -0
- package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
- package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
- package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
- package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
- package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
- package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
- package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
- package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
- package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
- package/skills-library/_general/frontend/color-token-migration.md +112 -0
- package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
- package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
- package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
- package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
- package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
- package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
- package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
- package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
- package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
- package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
- package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
- package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
- package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
- package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
- package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
- package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
- package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
- package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
- package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
- package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
- package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
- package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
- package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
- package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
- package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
- package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
- package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
- package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
- package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
- package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
- package/skills-library/_general/methodology/dead-code-activation.md +123 -0
- package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
- package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
- package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
- package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
- package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
- package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
- package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
- package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
- package/skills-library/_general/performance/liveclock-extraction.md +112 -0
- package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
- package/skills-library/_general/performance/use-visible-interval.md +131 -0
- package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
- package/skills-library/_quarantine/README.md +30 -0
- package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
- package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
- package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
- package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
- package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
- package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
- package/skills-library/api-patterns/graphql-content-queries.md +708 -0
- package/skills-library/appointment-scheduler-design.md +423 -0
- package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
- package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
- package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
- package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
- package/skills-library/automation/scheduled-content-publishing.md +608 -0
- package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
- package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
- package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
- package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
- package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
- package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
- package/skills-library/cms-patterns/content-branch-preview.md +515 -0
- package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
- package/skills-library/cms-patterns/mdx-component-content.md +649 -0
- package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
- package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
- package/skills-library/complexity-metrics/complexity-divider.md +707 -0
- package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
- package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
- package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
- package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
- package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
- package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
- package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
- package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
- package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
- package/skills-library/creative-multimedia/og-image-generator.md +635 -0
- package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
- package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
- package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
- package/skills-library/creative-multimedia/svg-generation.md +750 -0
- package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
- package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
- package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
- package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
- package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
- package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
- package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
- package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
- package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
- package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
- package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
- package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
- package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
- package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
- package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
- package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
- package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
- package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
- package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
- package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
- package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
- package/skills-library/database-solutions/content-publishing-states.md +631 -0
- package/skills-library/database-solutions/database-schema-designer.md +522 -0
- package/skills-library/database-solutions/er-diagram-components.md +569 -0
- package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
- package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
- package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
- package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
- package/skills-library/database-solutions/normalization-validator.md +778 -0
- package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
- package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
- package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
- package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
- package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
- package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
- package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
- package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
- package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
- package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
- package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
- package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
- package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
- package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
- package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
- package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
- package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
- package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
- package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
- package/skills-library/deployment-security/SECURITY.md +41 -0
- package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
- package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
- package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
- package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
- package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
- package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
- package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
- package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
- package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
- package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
- package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
- package/skills-library/deployment-security/vps-deployment.md +135 -0
- package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
- package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
- package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
- package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
- package/skills-library/document-processing/md-to-word-converter.md +318 -0
- package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
- package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
- package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
- package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
- package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
- package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
- package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
- package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
- package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
- package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
- package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
- package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
- package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
- package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
- package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
- package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
- package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
- package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
- package/skills-library/ecommerce/inventory-stock-management.md +270 -0
- package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
- package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
- package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
- package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
- package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
- package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
- package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
- package/skills-library/excalidraw-diagrams/LICENSE +21 -0
- package/skills-library/excalidraw-diagrams/README.md +178 -0
- package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
- package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
- package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
- package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
- package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
- package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
- package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
- package/skills-library/infrastructure/observability-designer.md +264 -0
- package/skills-library/infrastructure/performance-profiler.md +621 -0
- package/skills-library/installer-wizard-patterns.md +249 -0
- package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
- package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
- package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
- package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
- package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
- package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
- package/skills-library/integrations/headless-cms-architecture.md +484 -0
- package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
- package/skills-library/integrations/payload-cms-patterns.md +674 -0
- package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
- package/skills-library/integrations/rss-podcast-integration.md +300 -0
- package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/marketing/campaign-analytics.md +97 -0
- package/skills-library/marketing/content-creator.md +105 -0
- package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
- package/skills-library/marketing/social-media-analyzer.md +81 -0
- package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
- package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
- package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
- package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
- package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
- package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
- package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
- package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
- package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
- package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
- package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
- package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
- package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
- package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
- package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
- package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
- package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
- package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
- package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
- package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
- package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
- package/skills-library/methodology/tech-debt-tracker.md +570 -0
- package/skills-library/parallel-debug/SKILL.md +60 -0
- package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
- package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
- package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
- package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
- package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
- package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
- package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
- package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
- package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
- package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
- package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
- package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
- package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
- package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
- package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
- package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
- package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
- package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
- package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
- package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
- package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
- package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
- package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
- package/skills-library/security/admin-deletion-safety.md +396 -0
- package/skills-library/security/application-vuln-patterns.md +477 -0
- package/skills-library/security/env-secrets-manager.md +686 -0
- package/skills-library/security/secure-ai-application-templates.md +347 -0
- package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
- package/skills-library/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
- package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
- package/skills-library/system-context/SKILL.md +40 -0
- package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
- package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
- package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
- package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
- package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
- package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
- package/skills-library/testing/playwright-api-security-tests.md +202 -0
- package/skills-library/toolbox/SKILL.md +84 -0
- package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
- package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
- package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
- package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
- package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
- package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills-library/wordpress-style-theme-components.md +1526 -0
- package/templates/ASSUMPTIONS.md +1 -1
- package/templates/DECISION_LOG.md +0 -1
- package/templates/phase-prompt.md +1 -1
- package/templates/phoenix-comparison.md +6 -6
- package/templates/skill-api-integration.md +106 -0
- package/templates/skill-architecture-pattern.md +92 -0
- package/templates/skill-debug-pattern.md +98 -0
- package/templates/skill-devops-recipe.md +107 -0
- package/templates/skill-general.md +65 -0
- package/templates/skill-ui-component.md +113 -0
- package/tools/uat-runner.py +179 -0
- package/version.json +7 -3
- package/workflows/handoff-session.md +2 -2
- package/workflows/new-project.md +2 -2
- package/workflows/plan-phase.md +1 -1
- package/.claude-plugin/plugin.json +0 -64
- package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
- package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
- package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
- package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
- package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
- package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
- package/skills-library/specialists/api-architecture/api-designer.md +0 -49
- package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
- package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
- package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
- package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
- package/skills-library/specialists/backend/django-expert.md +0 -52
- package/skills-library/specialists/backend/fastapi-expert.md +0 -52
- package/skills-library/specialists/backend/laravel-specialist.md +0 -52
- package/skills-library/specialists/backend/nestjs-expert.md +0 -51
- package/skills-library/specialists/backend/rails-expert.md +0 -53
- package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
- package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
- package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
- package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
- package/skills-library/specialists/data-ml/rag-architect.md +0 -51
- package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
- package/skills-library/specialists/frontend/angular-architect.md +0 -52
- package/skills-library/specialists/frontend/flutter-expert.md +0 -51
- package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
- package/skills-library/specialists/frontend/react-native-expert.md +0 -50
- package/skills-library/specialists/frontend/vue-expert.md +0 -51
- package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
- package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
- package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
- package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
- package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
- package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
- package/skills-library/specialists/languages/cpp-pro.md +0 -74
- package/skills-library/specialists/languages/csharp-developer.md +0 -69
- package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
- package/skills-library/specialists/languages/golang-pro.md +0 -51
- package/skills-library/specialists/languages/java-architect.md +0 -49
- package/skills-library/specialists/languages/javascript-pro.md +0 -68
- package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
- package/skills-library/specialists/languages/php-pro.md +0 -49
- package/skills-library/specialists/languages/python-pro.md +0 -52
- package/skills-library/specialists/languages/react-expert.md +0 -51
- package/skills-library/specialists/languages/rust-engineer.md +0 -50
- package/skills-library/specialists/languages/sql-pro.md +0 -56
- package/skills-library/specialists/languages/swift-expert.md +0 -69
- package/skills-library/specialists/languages/typescript-pro.md +0 -51
- package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
- package/skills-library/specialists/platform/embedded-systems.md +0 -53
- package/skills-library/specialists/platform/game-developer.md +0 -53
- package/skills-library/specialists/platform/salesforce-developer.md +0 -53
- package/skills-library/specialists/platform/shopify-expert.md +0 -49
- package/skills-library/specialists/platform/wordpress-pro.md +0 -49
- package/skills-library/specialists/quality/code-documenter.md +0 -51
- package/skills-library/specialists/quality/code-reviewer.md +0 -67
- package/skills-library/specialists/quality/debugging-wizard.md +0 -51
- package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
- package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
- package/skills-library/specialists/quality/playwright-expert.md +0 -65
- package/skills-library/specialists/quality/spec-miner.md +0 -56
- package/skills-library/specialists/quality/test-master.md +0 -65
- package/skills-library/specialists/security/secure-code-guardian.md +0 -55
- package/skills-library/specialists/security/security-reviewer.md +0 -53
- package/skills-library/specialists/workflow/architecture-designer.md +0 -53
- package/skills-library/specialists/workflow/cli-developer.md +0 -70
- package/skills-library/specialists/workflow/feature-forge.md +0 -65
- package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
- package/skills-library/specialists/workflow/the-fool.md +0 -62
- /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
|
@@ -0,0 +1,662 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "pdf-forms-integration"
|
|
3
|
+
description: "Complete guide to integrating official fillable PDF forms (especially GTA forms) into web applications. Covers AcroForm field mapping, pdf-lib usage, field inspection, and hybrid browser-native editing workflow."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PDF Forms Integration Skill
|
|
7
|
+
|
|
8
|
+
**Purpose**: Guide Claude in integrating official fillable PDF forms (especially GTA forms) into web applications
|
|
9
|
+
|
|
10
|
+
**Use Cases**:
|
|
11
|
+
- Integrating official GTA PDF forms (Form 656, 433-A, 433-B, etc.)
|
|
12
|
+
- Auto-populating AcroForm fields from user data
|
|
13
|
+
- Allowing users to manually edit PDFs in browser
|
|
14
|
+
- Downloading filled PDFs for submission
|
|
15
|
+
|
|
16
|
+
**Key Technologies**: pdf-lib, PDF.js, React, TypeScript
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Overview
|
|
21
|
+
|
|
22
|
+
This skill helps integrate official PDF forms (with AcroForm fields) into web applications, enabling:
|
|
23
|
+
1. Loading official PDFs from GTA or other sources
|
|
24
|
+
2. Auto-populating form fields programmatically
|
|
25
|
+
3. Allowing users to edit fields directly in the PDF
|
|
26
|
+
4. Downloading the completed PDF
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Core Concepts
|
|
31
|
+
|
|
32
|
+
### AcroForm Fields
|
|
33
|
+
- **What**: Interactive form fields embedded in PDFs
|
|
34
|
+
- **Types**: Text fields, checkboxes, radio buttons, dropdowns
|
|
35
|
+
- **Field Names**: Cryptic identifiers like `topmostSubform[0].Page1[0].f1_01[0]`
|
|
36
|
+
- **Browser Support**: Chrome, Firefox, Edge, Safari all support editing AcroForms
|
|
37
|
+
|
|
38
|
+
### pdf-lib Library
|
|
39
|
+
- **Best For**: Programmatic PDF manipulation (filling fields, generating PDFs)
|
|
40
|
+
- **NOT For**: Interactive editing in browser (use native browser support)
|
|
41
|
+
- **Use Cases**: Pre-filling PDFs, batch processing, server-side generation
|
|
42
|
+
|
|
43
|
+
### PDF.js Library
|
|
44
|
+
- **Best For**: Rendering PDFs in browser
|
|
45
|
+
- **Limitations**: Not designed for form filling (use pdf-lib or native browser)
|
|
46
|
+
- **Use Case**: Custom PDF viewer, annotation tools
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Implementation Strategy
|
|
51
|
+
|
|
52
|
+
### Recommended Approach: Hybrid System
|
|
53
|
+
|
|
54
|
+
**Step 1**: Use pdf-lib to pre-fill fields from auto-populate
|
|
55
|
+
**Step 2**: Display filled PDF in iframe using native browser PDF viewer
|
|
56
|
+
**Step 3**: Let users edit directly in PDF (native browser support)
|
|
57
|
+
**Step 4**: Users download the edited PDF
|
|
58
|
+
|
|
59
|
+
**Why This Works**:
|
|
60
|
+
- ✅ Pre-filling is fast (pdf-lib)
|
|
61
|
+
- ✅ Editing is native (no custom UI needed)
|
|
62
|
+
- ✅ Works offline (PDFs cached locally)
|
|
63
|
+
- ✅ Legally compliant (official GTA forms)
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Phase 1: Download and Store Official PDFs
|
|
68
|
+
|
|
69
|
+
### Directory Structure
|
|
70
|
+
```
|
|
71
|
+
public/
|
|
72
|
+
irs-forms/
|
|
73
|
+
f656.pdf # Form 656 - Offer in Compromise
|
|
74
|
+
f433a.pdf # Form 433-A - Wage Earner
|
|
75
|
+
f433b.pdf # Form 433-B - Self-Employed
|
|
76
|
+
f433d.pdf # Form 433-D - Installment Agreement
|
|
77
|
+
f433f.pdf # Form 433-F - Collection Info
|
|
78
|
+
f9465.pdf # Form 9465 - Installment Agreement Request
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Download Commands
|
|
82
|
+
```bash
|
|
83
|
+
# Create directory
|
|
84
|
+
mkdir -p public/irs-forms
|
|
85
|
+
|
|
86
|
+
# Download forms from GTA
|
|
87
|
+
curl -o public/irs-forms/f656.pdf https://www.irs.gov/pub/irs-pdf/f656.pdf
|
|
88
|
+
curl -o public/irs-forms/f433a.pdf https://www.irs.gov/pub/irs-pdf/f433a.pdf
|
|
89
|
+
curl -o public/irs-forms/f433b.pdf https://www.irs.gov/pub/irs-pdf/f433b.pdf
|
|
90
|
+
curl -o public/irs-forms/f433d.pdf https://www.irs.gov/pub/irs-pdf/f433d.pdf
|
|
91
|
+
curl -o public/irs-forms/f433f.pdf https://www.irs.gov/pub/irs-pdf/f433f.pdf
|
|
92
|
+
curl -o public/irs-forms/f9465.pdf https://www.irs.gov/pub/irs-pdf/f9465.pdf
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Alternative: Windows PowerShell
|
|
96
|
+
```powershell
|
|
97
|
+
# Create directory
|
|
98
|
+
New-Item -ItemType Directory -Force -Path "public/irs-forms"
|
|
99
|
+
|
|
100
|
+
# Download forms
|
|
101
|
+
Invoke-WebRequest -Uri "https://www.irs.gov/pub/irs-pdf/f656.pdf" -OutFile "public/irs-forms/f656.pdf"
|
|
102
|
+
Invoke-WebRequest -Uri "https://www.irs.gov/pub/irs-pdf/f433a.pdf" -OutFile "public/irs-forms/f433a.pdf"
|
|
103
|
+
Invoke-WebRequest -Uri "https://www.irs.gov/pub/irs-pdf/f433b.pdf" -OutFile "public/irs-forms/f433b.pdf"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Phase 2: Create PDF Field Inspector
|
|
109
|
+
|
|
110
|
+
**Purpose**: Discover the actual field names in official PDFs
|
|
111
|
+
|
|
112
|
+
### Create: `src/utils/pdfFieldInspector.ts`
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { PDFDocument } from 'pdf-lib';
|
|
116
|
+
|
|
117
|
+
export interface PDFFieldInfo {
|
|
118
|
+
name: string;
|
|
119
|
+
type: string;
|
|
120
|
+
value?: string;
|
|
121
|
+
defaultValue?: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Inspect PDF form fields and return their names and types
|
|
126
|
+
*/
|
|
127
|
+
export async function inspectPDFFields(pdfUrl: string): Promise<PDFFieldInfo[]> {
|
|
128
|
+
try {
|
|
129
|
+
// Load the PDF
|
|
130
|
+
const response = await fetch(pdfUrl);
|
|
131
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
132
|
+
const pdfDoc = await PDFDocument.load(arrayBuffer);
|
|
133
|
+
|
|
134
|
+
// Get the form
|
|
135
|
+
const form = pdfDoc.getForm();
|
|
136
|
+
const fields = form.getFields();
|
|
137
|
+
|
|
138
|
+
// Map field information
|
|
139
|
+
const fieldInfo: PDFFieldInfo[] = fields.map(field => ({
|
|
140
|
+
name: field.getName(),
|
|
141
|
+
type: field.constructor.name,
|
|
142
|
+
value: field.constructor.name === 'PDFTextField'
|
|
143
|
+
? (field as any).getText()
|
|
144
|
+
: undefined,
|
|
145
|
+
}));
|
|
146
|
+
|
|
147
|
+
return fieldInfo;
|
|
148
|
+
} catch (error) {
|
|
149
|
+
console.error('Error inspecting PDF fields:', error);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Log all fields to console for documentation
|
|
156
|
+
*/
|
|
157
|
+
export async function logPDFFields(pdfUrl: string) {
|
|
158
|
+
const fields = await inspectPDFFields(pdfUrl);
|
|
159
|
+
|
|
160
|
+
console.log(`\n=== PDF Field Inspector ===`);
|
|
161
|
+
console.log(`PDF: ${pdfUrl}`);
|
|
162
|
+
console.log(`Total Fields: ${fields.length}\n`);
|
|
163
|
+
|
|
164
|
+
fields.forEach((field, index) => {
|
|
165
|
+
console.log(`${index + 1}. ${field.name}`);
|
|
166
|
+
console.log(` Type: ${field.type}`);
|
|
167
|
+
if (field.value) {
|
|
168
|
+
console.log(` Value: ${field.value}`);
|
|
169
|
+
}
|
|
170
|
+
console.log('');
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Usage Example
|
|
176
|
+
```typescript
|
|
177
|
+
import { logPDFFields } from './utils/pdfFieldInspector';
|
|
178
|
+
|
|
179
|
+
// In a component or test file
|
|
180
|
+
async function inspectForm656() {
|
|
181
|
+
await logPDFFields('/irs-forms/f656.pdf');
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Phase 3: Create Field Mappings
|
|
188
|
+
|
|
189
|
+
**Purpose**: Map application field names to PDF field names
|
|
190
|
+
|
|
191
|
+
### Create: `src/lib/irsFieldMappings.ts`
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
export interface FieldMapping {
|
|
195
|
+
appFieldName: string; // Our field name (e.g., 'taxpayerName')
|
|
196
|
+
pdfFieldName: string; // PDF's field name (e.g., 'topmostSubform[0].Page1[0].f1_01[0]')
|
|
197
|
+
label: string; // Human-readable label
|
|
198
|
+
type: 'text' | 'date' | 'number' | 'checkbox' | 'radio';
|
|
199
|
+
format?: (value: any) => string; // Optional formatter
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Form 656 - Offer in Compromise
|
|
204
|
+
* NOTE: These field names are EXAMPLES - inspect actual PDF for real names
|
|
205
|
+
*/
|
|
206
|
+
export const FORM_656_FIELD_MAPPING: FieldMapping[] = [
|
|
207
|
+
{
|
|
208
|
+
appFieldName: 'taxpayerName',
|
|
209
|
+
pdfFieldName: 'topmostSubform[0].Page1[0].f1_01[0]', // EXAMPLE - verify actual name
|
|
210
|
+
label: 'Taxpayer Name',
|
|
211
|
+
type: 'text',
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
appFieldName: 'ssn',
|
|
215
|
+
pdfFieldName: 'topmostSubform[0].Page1[0].f1_02[0]', // EXAMPLE
|
|
216
|
+
label: 'SSN (Last 4 Digits)',
|
|
217
|
+
type: 'text',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
appFieldName: 'dateOfBirth',
|
|
221
|
+
pdfFieldName: 'topmostSubform[0].Page1[0].f1_03[0]', // EXAMPLE
|
|
222
|
+
label: 'Date of Birth',
|
|
223
|
+
type: 'date',
|
|
224
|
+
format: (value: string) => {
|
|
225
|
+
// Convert YYYY-MM-DD to MM/DD/YYYY
|
|
226
|
+
const date = new Date(value);
|
|
227
|
+
return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
// ... more mappings
|
|
231
|
+
];
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Form 433-A - Collection Information Statement (Wage Earner)
|
|
235
|
+
*/
|
|
236
|
+
export const FORM_433A_FIELD_MAPPING: FieldMapping[] = [
|
|
237
|
+
// TODO: Inspect PDF and add mappings
|
|
238
|
+
];
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Form 433-B - Collection Information Statement (Self-Employed)
|
|
242
|
+
*/
|
|
243
|
+
export const FORM_433B_FIELD_MAPPING: FieldMapping[] = [
|
|
244
|
+
// TODO: Inspect PDF and add mappings
|
|
245
|
+
];
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Get field mapping for a specific form
|
|
249
|
+
*/
|
|
250
|
+
export function getFieldMapping(formType: '656' | '433-A' | '433-B'): FieldMapping[] {
|
|
251
|
+
switch (formType) {
|
|
252
|
+
case '656':
|
|
253
|
+
return FORM_656_FIELD_MAPPING;
|
|
254
|
+
case '433-A':
|
|
255
|
+
return FORM_433A_FIELD_MAPPING;
|
|
256
|
+
case '433-B':
|
|
257
|
+
return FORM_433B_FIELD_MAPPING;
|
|
258
|
+
default:
|
|
259
|
+
return [];
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Phase 4: Fill PDF Fields with pdf-lib
|
|
267
|
+
|
|
268
|
+
### Create: `src/lib/pdfFormFiller.ts`
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
import { PDFDocument, PDFTextField } from 'pdf-lib';
|
|
272
|
+
import { getFieldMapping, FieldMapping } from './irsFieldMappings';
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Fill PDF form fields with data
|
|
276
|
+
*/
|
|
277
|
+
export async function fillPDFForm(
|
|
278
|
+
pdfUrl: string,
|
|
279
|
+
formType: '656' | '433-A' | '433-B',
|
|
280
|
+
data: Record<string, any>
|
|
281
|
+
): Promise<Uint8Array> {
|
|
282
|
+
try {
|
|
283
|
+
// Load the PDF
|
|
284
|
+
const response = await fetch(pdfUrl);
|
|
285
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
286
|
+
const pdfDoc = await PDFDocument.load(arrayBuffer);
|
|
287
|
+
|
|
288
|
+
// Get the form
|
|
289
|
+
const form = pdfDoc.getForm();
|
|
290
|
+
|
|
291
|
+
// Get field mappings
|
|
292
|
+
const mappings = getFieldMapping(formType);
|
|
293
|
+
|
|
294
|
+
// Fill each field
|
|
295
|
+
for (const mapping of mappings) {
|
|
296
|
+
const value = data[mapping.appFieldName];
|
|
297
|
+
|
|
298
|
+
if (!value) {
|
|
299
|
+
console.warn(`No value for field: ${mapping.appFieldName}`);
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
try {
|
|
304
|
+
// Format value if formatter exists
|
|
305
|
+
const formattedValue = mapping.format
|
|
306
|
+
? mapping.format(value)
|
|
307
|
+
: String(value);
|
|
308
|
+
|
|
309
|
+
// Get PDF field
|
|
310
|
+
const pdfField = form.getTextField(mapping.pdfFieldName);
|
|
311
|
+
|
|
312
|
+
// Set the value
|
|
313
|
+
pdfField.setText(formattedValue);
|
|
314
|
+
|
|
315
|
+
console.log(`✓ Filled: ${mapping.label} = ${formattedValue}`);
|
|
316
|
+
} catch (fieldError) {
|
|
317
|
+
console.error(`Error filling field ${mapping.pdfFieldName}:`, fieldError);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Save the PDF
|
|
322
|
+
const pdfBytes = await pdfDoc.save();
|
|
323
|
+
return pdfBytes;
|
|
324
|
+
} catch (error) {
|
|
325
|
+
console.error('Error filling PDF form:', error);
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Fill PDF and create a blob URL for preview
|
|
332
|
+
*/
|
|
333
|
+
export async function fillAndPreviewPDF(
|
|
334
|
+
pdfUrl: string,
|
|
335
|
+
formType: '656' | '433-A' | '433-B',
|
|
336
|
+
data: Record<string, any>
|
|
337
|
+
): Promise<string> {
|
|
338
|
+
const pdfBytes = await fillPDFForm(pdfUrl, formType, data);
|
|
339
|
+
const blob = new Blob([pdfBytes], { type: 'application/pdf' });
|
|
340
|
+
return URL.createObjectURL(blob);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Fill PDF and download
|
|
345
|
+
*/
|
|
346
|
+
export async function fillAndDownloadPDF(
|
|
347
|
+
pdfUrl: string,
|
|
348
|
+
formType: '656' | '433-A' | '433-B',
|
|
349
|
+
data: Record<string, any>,
|
|
350
|
+
filename: string
|
|
351
|
+
) {
|
|
352
|
+
const pdfBytes = await fillPDFForm(pdfUrl, formType, data);
|
|
353
|
+
const blob = new Blob([pdfBytes], { type: 'application/pdf' });
|
|
354
|
+
const url = URL.createObjectURL(blob);
|
|
355
|
+
|
|
356
|
+
const a = document.createElement('a');
|
|
357
|
+
a.href = url;
|
|
358
|
+
a.download = filename;
|
|
359
|
+
document.body.appendChild(a);
|
|
360
|
+
a.click();
|
|
361
|
+
document.body.removeChild(a);
|
|
362
|
+
|
|
363
|
+
URL.revokeObjectURL(url);
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Phase 5: Update UI Component
|
|
370
|
+
|
|
371
|
+
### Update: `src/components/Forms/PDFFormEditor.tsx`
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
import React, { useState, useEffect } from 'react';
|
|
375
|
+
import { Download, FileText } from 'lucide-react';
|
|
376
|
+
import { fillAndPreviewPDF, fillAndDownloadPDF } from '../../lib/pdfFormFiller';
|
|
377
|
+
|
|
378
|
+
interface PDFFormEditorProps {
|
|
379
|
+
formType: '656' | '433-A' | '433-B';
|
|
380
|
+
formTitle: string;
|
|
381
|
+
fields: Record<string, string>;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export function PDFFormEditor({ formType, formTitle, fields }: PDFFormEditorProps) {
|
|
385
|
+
const [pdfUrl, setPdfUrl] = useState<string | null>(null);
|
|
386
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
387
|
+
const [error, setError] = useState<string | null>(null);
|
|
388
|
+
|
|
389
|
+
// Get the PDF path
|
|
390
|
+
const getPDFPath = (): string => {
|
|
391
|
+
const formMap: Record<string, string> = {
|
|
392
|
+
'656': '/irs-forms/f656.pdf',
|
|
393
|
+
'433-A': '/irs-forms/f433a.pdf',
|
|
394
|
+
'433-B': '/irs-forms/f433b.pdf',
|
|
395
|
+
};
|
|
396
|
+
return formMap[formType];
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
// Fill and preview PDF when fields change
|
|
400
|
+
useEffect(() => {
|
|
401
|
+
if (Object.keys(fields).length === 0) return;
|
|
402
|
+
|
|
403
|
+
const fillPDF = async () => {
|
|
404
|
+
setIsLoading(true);
|
|
405
|
+
setError(null);
|
|
406
|
+
|
|
407
|
+
try {
|
|
408
|
+
const pdfPath = getPDFPath();
|
|
409
|
+
const url = await fillAndPreviewPDF(pdfPath, formType, fields);
|
|
410
|
+
|
|
411
|
+
// Clean up old URL
|
|
412
|
+
if (pdfUrl) {
|
|
413
|
+
URL.revokeObjectURL(pdfUrl);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
setPdfUrl(url);
|
|
417
|
+
} catch (err) {
|
|
418
|
+
console.error('Error filling PDF:', err);
|
|
419
|
+
setError('Failed to fill PDF. Please try again.');
|
|
420
|
+
} finally {
|
|
421
|
+
setIsLoading(false);
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
fillPDF();
|
|
426
|
+
|
|
427
|
+
// Cleanup on unmount
|
|
428
|
+
return () => {
|
|
429
|
+
if (pdfUrl) {
|
|
430
|
+
URL.revokeObjectURL(pdfUrl);
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
|
+
}, [fields, formType]);
|
|
434
|
+
|
|
435
|
+
const handleDownload = async () => {
|
|
436
|
+
try {
|
|
437
|
+
const pdfPath = getPDFPath();
|
|
438
|
+
const filename = `GTA_Form_${formType}_${new Date().toISOString().split('T')[0]}.pdf`;
|
|
439
|
+
await fillAndDownloadPDF(pdfPath, formType, fields, filename);
|
|
440
|
+
} catch (err) {
|
|
441
|
+
console.error('Error downloading PDF:', err);
|
|
442
|
+
setError('Failed to download PDF. Please try again.');
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
return (
|
|
447
|
+
<div className="space-y-6">
|
|
448
|
+
{/* PDF Preview */}
|
|
449
|
+
<div className="bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 p-6">
|
|
450
|
+
<div className="flex items-center justify-between mb-4">
|
|
451
|
+
<div className="flex items-center gap-2">
|
|
452
|
+
<FileText className="w-5 h-5 text-blue-600 dark:text-blue-400" />
|
|
453
|
+
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
|
|
454
|
+
{formTitle}
|
|
455
|
+
</h3>
|
|
456
|
+
</div>
|
|
457
|
+
<button
|
|
458
|
+
onClick={handleDownload}
|
|
459
|
+
disabled={!pdfUrl || isLoading}
|
|
460
|
+
className="flex items-center gap-2 px-4 py-2 bg-gradient-to-r from-blue-600 to-blue-700 text-white rounded-lg font-medium hover:from-blue-700 hover:to-blue-800 shadow-sm hover:shadow-md transition-all disabled:opacity-50 disabled:cursor-not-allowed"
|
|
461
|
+
>
|
|
462
|
+
<Download className="w-4 h-4" />
|
|
463
|
+
<span>Download PDF</span>
|
|
464
|
+
</button>
|
|
465
|
+
</div>
|
|
466
|
+
|
|
467
|
+
{error && (
|
|
468
|
+
<div className="mb-4 p-4 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg">
|
|
469
|
+
<p className="text-sm text-red-800 dark:text-red-200">{error}</p>
|
|
470
|
+
</div>
|
|
471
|
+
)}
|
|
472
|
+
|
|
473
|
+
<div className="relative bg-gray-50 dark:bg-gray-900 rounded-lg overflow-hidden" style={{ height: '800px' }}>
|
|
474
|
+
{isLoading && (
|
|
475
|
+
<div className="absolute inset-0 flex items-center justify-center bg-white/80 dark:bg-gray-900/80 z-10">
|
|
476
|
+
<div className="text-center">
|
|
477
|
+
<div className="w-12 h-12 border-4 border-blue-600 border-t-transparent rounded-full animate-spin mx-auto mb-4"></div>
|
|
478
|
+
<p className="text-sm text-gray-600 dark:text-gray-400">Filling PDF...</p>
|
|
479
|
+
</div>
|
|
480
|
+
</div>
|
|
481
|
+
)}
|
|
482
|
+
|
|
483
|
+
{pdfUrl ? (
|
|
484
|
+
<iframe
|
|
485
|
+
src={pdfUrl}
|
|
486
|
+
className="w-full h-full border-0"
|
|
487
|
+
title="PDF Preview"
|
|
488
|
+
/>
|
|
489
|
+
) : (
|
|
490
|
+
<div className="flex items-center justify-center h-full">
|
|
491
|
+
<div className="text-center text-gray-500 dark:text-gray-400">
|
|
492
|
+
<FileText className="w-16 h-16 mx-auto mb-4 opacity-50" />
|
|
493
|
+
<p className="text-lg font-medium">Fill form fields to generate PDF</p>
|
|
494
|
+
<p className="text-sm mt-2">Use the auto-populate button above</p>
|
|
495
|
+
</div>
|
|
496
|
+
</div>
|
|
497
|
+
)}
|
|
498
|
+
</div>
|
|
499
|
+
|
|
500
|
+
{pdfUrl && (
|
|
501
|
+
<div className="mt-4 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
502
|
+
<p className="text-sm text-blue-800 dark:text-blue-200">
|
|
503
|
+
<strong>✓ PDF Ready:</strong> You can now edit fields directly in the PDF above.
|
|
504
|
+
Your browser's native PDF editor allows you to make changes before downloading.
|
|
505
|
+
</p>
|
|
506
|
+
</div>
|
|
507
|
+
)}
|
|
508
|
+
</div>
|
|
509
|
+
</div>
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## Common Issues and Solutions
|
|
517
|
+
|
|
518
|
+
### Issue 1: Field Name Not Found
|
|
519
|
+
**Problem**: `Error: Field 'xyz' not found`
|
|
520
|
+
**Solution**: Run PDF field inspector to get actual field names
|
|
521
|
+
|
|
522
|
+
### Issue 2: Fields Not Visible After Filling
|
|
523
|
+
**Problem**: Fields are filled but don't show in PDF
|
|
524
|
+
**Solution**: Some PDFs need appearance streams. Try:
|
|
525
|
+
```typescript
|
|
526
|
+
const form = pdfDoc.getForm();
|
|
527
|
+
form.updateFieldAppearances(); // Add this before saving
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Issue 3: Date Format Issues
|
|
531
|
+
**Problem**: Dates display incorrectly
|
|
532
|
+
**Solution**: Add format function in field mapping:
|
|
533
|
+
```typescript
|
|
534
|
+
{
|
|
535
|
+
appFieldName: 'dateOfBirth',
|
|
536
|
+
pdfFieldName: '...',
|
|
537
|
+
type: 'date',
|
|
538
|
+
format: (value) => {
|
|
539
|
+
const date = new Date(value);
|
|
540
|
+
return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;
|
|
541
|
+
},
|
|
542
|
+
}
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### Issue 4: CORS Errors When Loading PDF
|
|
546
|
+
**Problem**: Can't load PDF from external URL
|
|
547
|
+
**Solution**: Store PDFs locally in `public/` folder or configure CORS on server
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## Best Practices
|
|
552
|
+
|
|
553
|
+
### 1. Field Mapping Management
|
|
554
|
+
- Keep mappings in separate file (`irsFieldMappings.ts`)
|
|
555
|
+
- Document field types and formats
|
|
556
|
+
- Add comments with PDF field locations (page number, section)
|
|
557
|
+
|
|
558
|
+
### 2. Error Handling
|
|
559
|
+
- Catch errors for each field individually
|
|
560
|
+
- Log which fields fail to fill
|
|
561
|
+
- Continue filling other fields even if one fails
|
|
562
|
+
|
|
563
|
+
### 3. User Experience
|
|
564
|
+
- Show loading state while filling PDF
|
|
565
|
+
- Display which fields were successfully filled
|
|
566
|
+
- Allow users to edit in native PDF viewer
|
|
567
|
+
- Provide clear download button
|
|
568
|
+
|
|
569
|
+
### 4. Legal Compliance
|
|
570
|
+
- Use official GTA PDFs only
|
|
571
|
+
- Add disclaimer about form revision dates
|
|
572
|
+
- Don't modify PDF structure (only fill fields)
|
|
573
|
+
- Recommend users verify with tax professional
|
|
574
|
+
|
|
575
|
+
---
|
|
576
|
+
|
|
577
|
+
## Integration Checklist
|
|
578
|
+
|
|
579
|
+
- [ ] Download official PDF forms to `public/irs-forms/`
|
|
580
|
+
- [ ] Create PDF field inspector utility
|
|
581
|
+
- [ ] Inspect PDFs and document field names
|
|
582
|
+
- [ ] Create field mappings file
|
|
583
|
+
- [ ] Implement `pdfFormFiller.ts`
|
|
584
|
+
- [ ] Update UI component to use filled PDFs
|
|
585
|
+
- [ ] Test auto-populate workflow
|
|
586
|
+
- [ ] Test manual editing in browser
|
|
587
|
+
- [ ] Test download functionality
|
|
588
|
+
- [ ] Add error handling
|
|
589
|
+
- [ ] Add user instructions
|
|
590
|
+
- [ ] Test with real user data
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## Time Estimates
|
|
595
|
+
|
|
596
|
+
| Task | Time | Priority |
|
|
597
|
+
|------|------|----------|
|
|
598
|
+
| Download PDFs | 5 min | HIGH |
|
|
599
|
+
| Create field inspector | 30 min | HIGH |
|
|
600
|
+
| Inspect Form 656 | 15 min | HIGH |
|
|
601
|
+
| Create mappings for Form 656 | 1-2 hrs | HIGH |
|
|
602
|
+
| Implement pdfFormFiller | 1 hr | HIGH |
|
|
603
|
+
| Update UI component | 1 hr | HIGH |
|
|
604
|
+
| Test and debug | 1-2 hrs | HIGH |
|
|
605
|
+
| Inspect Form 433-A | 15 min | MEDIUM |
|
|
606
|
+
| Mappings for Form 433-A | 1-2 hrs | MEDIUM |
|
|
607
|
+
| Inspect Form 433-B | 15 min | MEDIUM |
|
|
608
|
+
| Mappings for Form 433-B | 1-2 hrs | MEDIUM |
|
|
609
|
+
|
|
610
|
+
**Total for Form 656**: 4-6 hours
|
|
611
|
+
**Total for all 3 forms**: 10-14 hours
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## Success Criteria
|
|
616
|
+
|
|
617
|
+
✅ **Phase 1 Complete When**:
|
|
618
|
+
- Official PDFs downloaded and stored
|
|
619
|
+
- PDFs load successfully in browser
|
|
620
|
+
- No CORS errors
|
|
621
|
+
|
|
622
|
+
✅ **Phase 2 Complete When**:
|
|
623
|
+
- Field inspector lists all PDF field names
|
|
624
|
+
- Field names documented in JSON or console
|
|
625
|
+
- Field types identified (text, date, number, etc.)
|
|
626
|
+
|
|
627
|
+
✅ **Phase 3 Complete When**:
|
|
628
|
+
- Field mappings file created
|
|
629
|
+
- At least 10 fields mapped per form
|
|
630
|
+
- Formatters added for dates and currency
|
|
631
|
+
|
|
632
|
+
✅ **Phase 4 Complete When**:
|
|
633
|
+
- PDF fields fill programmatically
|
|
634
|
+
- Filled values visible in PDF
|
|
635
|
+
- No console errors during filling
|
|
636
|
+
|
|
637
|
+
✅ **Phase 5 Complete When**:
|
|
638
|
+
- UI displays filled PDF
|
|
639
|
+
- Users can edit in native PDF viewer
|
|
640
|
+
- Download produces correct PDF
|
|
641
|
+
|
|
642
|
+
✅ **Complete Integration When**:
|
|
643
|
+
- Auto-populate fills PDF correctly
|
|
644
|
+
- All 12+ fields fill successfully
|
|
645
|
+
- Manual editing works in browser
|
|
646
|
+
- Download produces submission-ready PDF
|
|
647
|
+
- Tested with real user data
|
|
648
|
+
|
|
649
|
+
---
|
|
650
|
+
|
|
651
|
+
## Additional Resources
|
|
652
|
+
|
|
653
|
+
- **pdf-lib Docs**: https://pdf-lib.js.org/docs/api/
|
|
654
|
+
- **GTA PDF Forms**: https://www.irs.gov/forms-instructions
|
|
655
|
+
- **AcroForms Spec**: https://www.pdftron.com/blog/pdf/what-are-acroforms/
|
|
656
|
+
- **Browser PDF Support**: https://caniuse.com/pdf-viewer
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
**Skill Created**: October 28, 2025
|
|
661
|
+
**Last Updated**: November 7, 2025
|
|
662
|
+
**Status**: Production ready for GTA forms integration
|