buildanything 1.8.0 → 2.0.0
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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -3
- package/CHANGELOG.md +57 -0
- package/README.md +2 -2
- package/agents/a11y-architect.md +166 -0
- package/agents/business-model.md +80 -29
- package/agents/code-architect.md +75 -0
- package/agents/code-reviewer.md +255 -0
- package/agents/code-simplifier.md +64 -0
- package/agents/design-brand-guardian.md +293 -53
- package/agents/design-critic.md +139 -0
- package/agents/design-inclusive-visuals-specialist.md +6 -19
- package/agents/design-ui-designer.md +335 -56
- package/agents/design-ux-architect.md +403 -55
- package/agents/design-ux-researcher.md +264 -49
- package/agents/engineering-ai-engineer.md +26 -36
- package/agents/engineering-backend-architect.md +185 -36
- package/agents/engineering-data-engineer.md +225 -43
- package/agents/engineering-devops-automator.md +227 -74
- package/agents/engineering-frontend-developer.md +210 -34
- package/agents/engineering-mobile-app-builder.md +6 -1
- package/agents/engineering-rapid-prototyper.md +30 -9
- package/agents/engineering-security-engineer.md +263 -61
- package/agents/engineering-senior-developer.md +128 -19
- package/agents/engineering-sre.md +84 -0
- package/agents/engineering-technical-writer.md +285 -41
- package/agents/feature-intel.md +110 -0
- package/agents/ios-app-review-guardian.md +19 -2
- package/agents/ios-foundation-models-specialist.md +20 -2
- package/agents/ios-storekit-specialist.md +9 -2
- package/agents/ios-swift-architect.md +28 -1
- package/agents/ios-swift-search.md +8 -1
- package/agents/ios-swift-ui-design.md +33 -1
- package/agents/marketing-app-store-optimizer.md +246 -64
- package/agents/planner.md +216 -0
- package/agents/pr-test-analyzer.md +63 -0
- package/agents/product-feedback-synthesizer.md +8 -2
- package/agents/refactor-cleaner.md +102 -0
- package/agents/security-reviewer.md +128 -0
- package/agents/silent-failure-hunter.md +54 -0
- package/agents/swift-build-resolver.md +119 -0
- package/agents/swift-reviewer.md +112 -0
- package/agents/tech-feasibility.md +21 -1
- package/agents/testing-api-tester.md +236 -59
- package/agents/testing-evidence-collector.md +26 -1
- package/agents/testing-performance-benchmarker.md +21 -1
- package/agents/testing-reality-checker.md +6 -1
- package/agents/visual-research.md +116 -0
- package/bin/adapters/cycle-counter-tool.ts +155 -0
- package/bin/adapters/scribe-tool.ts +71 -0
- package/bin/adapters/state-save-tool.ts +130 -0
- package/bin/adapters/write-lease-tool.ts +127 -0
- package/bin/buildanything-runtime.js +15 -0
- package/bin/buildanything-runtime.ts +328 -0
- package/bin/setup.js +83 -8
- package/commands/add-feature.md +2 -0
- package/commands/build.md +782 -266
- package/commands/fix.md +1 -1
- package/commands/self-check.md +121 -0
- package/commands/setup.md +50 -9
- package/commands/ux-review.md +2 -2
- package/commands/verify.md +6 -9
- package/docs/migration/agents.yaml +729 -0
- package/docs/migration/phase-graph.yaml +1088 -0
- package/docs/migration/sdk-host-compat.md +18 -0
- package/hooks/compile-writer-owner-cache.ts +171 -0
- package/hooks/hooks.json +36 -0
- package/hooks/pre-tool-use +19 -0
- package/hooks/pre-tool-use.ts +776 -0
- package/hooks/record-mode-transitions.ts +178 -0
- package/hooks/session-start +71 -1
- package/hooks/subagent-start +17 -0
- package/hooks/subagent-start.ts +471 -0
- package/hooks/subagent-stop +17 -0
- package/hooks/subagent-stop.ts +153 -0
- package/package.json +24 -4
- package/protocols/architecture-schema.md +171 -0
- package/protocols/decision-log.md +131 -0
- package/protocols/ios-context.md +10 -11
- package/protocols/ios-phase-branches.md +208 -33
- package/protocols/launch-readiness.md +258 -0
- package/protocols/metric-loop.md +62 -2
- package/protocols/smoke-test.md +9 -1
- package/protocols/state-schema.json +388 -0
- package/protocols/state-schema.md +172 -0
- package/protocols/verify.md +62 -2
- package/protocols/visual-dna.md +185 -0
- package/protocols/web-phase-branches.md +222 -72
- package/skills/ios/_VENDORED.md +2 -0
- package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
- package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
- package/skills/ios/hig-components-content/SKILL.md +86 -0
- package/skills/ios/hig-components-content/references/activity-views.md +79 -0
- package/skills/ios/hig-components-content/references/charts.md +180 -0
- package/skills/ios/hig-components-content/references/collections.md +48 -0
- package/skills/ios/hig-components-content/references/color-wells.md +42 -0
- package/skills/ios/hig-components-content/references/image-views.md +82 -0
- package/skills/ios/hig-components-content/references/image-wells.md +34 -0
- package/skills/ios/hig-components-content/references/lockups.md +78 -0
- package/skills/ios/hig-components-content/references/web-views.md +36 -0
- package/skills/ios/hig-components-controls/SKILL.md +88 -0
- package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
- package/skills/ios/hig-components-controls/references/controls.md +112 -0
- package/skills/ios/hig-components-controls/references/gauges.md +74 -0
- package/skills/ios/hig-components-controls/references/labels.md +92 -0
- package/skills/ios/hig-components-controls/references/pickers.md +128 -0
- package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
- package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
- package/skills/ios/hig-components-controls/references/sliders.md +92 -0
- package/skills/ios/hig-components-controls/references/steppers.md +40 -0
- package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
- package/skills/ios/hig-components-controls/references/text-views.md +56 -0
- package/skills/ios/hig-components-controls/references/toggles.md +127 -0
- package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
- package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
- package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
- package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
- package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
- package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
- package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
- package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
- package/skills/ios/hig-components-layout/SKILL.md +99 -0
- package/skills/ios/hig-components-layout/references/boxes.md +48 -0
- package/skills/ios/hig-components-layout/references/column-views.md +44 -0
- package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
- package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
- package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
- package/skills/ios/hig-components-layout/references/panels.md +75 -0
- package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
- package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
- package/skills/ios/hig-components-layout/references/split-views.md +110 -0
- package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
- package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
- package/skills/ios/hig-components-layout/references/windows.md +188 -0
- package/skills/ios/hig-components-menus/SKILL.md +81 -0
- package/skills/ios/hig-components-menus/references/action-button.md +61 -0
- package/skills/ios/hig-components-menus/references/buttons.md +261 -0
- package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
- package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
- package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
- package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
- package/skills/ios/hig-components-menus/references/menus.md +171 -0
- package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
- package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
- package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
- package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
- package/skills/ios/hig-components-search/SKILL.md +68 -0
- package/skills/ios/hig-components-search/references/page-controls.md +120 -0
- package/skills/ios/hig-components-search/references/path-controls.md +40 -0
- package/skills/ios/hig-components-search/references/search-fields.md +189 -0
- package/skills/ios/hig-components-status/SKILL.md +80 -0
- package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
- package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
- package/skills/ios/hig-components-status/references/status-bars.md +38 -0
- package/skills/ios/hig-components-system/SKILL.md +88 -0
- package/skills/ios/hig-components-system/references/app-clips.md +387 -0
- package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
- package/skills/ios/hig-components-system/references/complications.md +425 -0
- package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
- package/skills/ios/hig-components-system/references/live-activities.md +442 -0
- package/skills/ios/hig-components-system/references/notifications.md +153 -0
- package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
- package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
- package/skills/ios/hig-components-system/references/widgets.md +517 -0
- package/skills/ios/hig-foundations/SKILL.md +98 -0
- package/skills/ios/hig-foundations/references/accessibility.md +291 -0
- package/skills/ios/hig-foundations/references/app-icons.md +210 -0
- package/skills/ios/hig-foundations/references/branding.md +44 -0
- package/skills/ios/hig-foundations/references/color.md +274 -0
- package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
- package/skills/ios/hig-foundations/references/icons.md +263 -0
- package/skills/ios/hig-foundations/references/images.md +176 -0
- package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
- package/skills/ios/hig-foundations/references/inclusion.md +189 -0
- package/skills/ios/hig-foundations/references/layout.md +425 -0
- package/skills/ios/hig-foundations/references/materials.md +238 -0
- package/skills/ios/hig-foundations/references/motion.md +103 -0
- package/skills/ios/hig-foundations/references/privacy.md +231 -0
- package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
- package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
- package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
- package/skills/ios/hig-foundations/references/typography.md +1146 -0
- package/skills/ios/hig-foundations/references/writing.md +91 -0
- package/skills/ios/hig-inputs/SKILL.md +94 -0
- package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
- package/skills/ios/hig-inputs/references/camera-control.md +107 -0
- package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
- package/skills/ios/hig-inputs/references/eyes.md +120 -0
- package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
- package/skills/ios/hig-inputs/references/game-controls.md +156 -0
- package/skills/ios/hig-inputs/references/gestures.md +208 -0
- package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
- package/skills/ios/hig-inputs/references/keyboards.md +234 -0
- package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
- package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
- package/skills/ios/hig-inputs/references/remotes.md +67 -0
- package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
- package/skills/ios/hig-patterns/SKILL.md +104 -0
- package/skills/ios/hig-patterns/references/charting-data.md +81 -0
- package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
- package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
- package/skills/ios/hig-patterns/references/entering-data.md +69 -0
- package/skills/ios/hig-patterns/references/feedback.md +67 -0
- package/skills/ios/hig-patterns/references/file-management.md +135 -0
- package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
- package/skills/ios/hig-patterns/references/launching.md +81 -0
- package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
- package/skills/ios/hig-patterns/references/loading.md +59 -0
- package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
- package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
- package/skills/ios/hig-patterns/references/modality.md +82 -0
- package/skills/ios/hig-patterns/references/multitasking.md +131 -0
- package/skills/ios/hig-patterns/references/offering-help.md +117 -0
- package/skills/ios/hig-patterns/references/onboarding.md +69 -0
- package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
- package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
- package/skills/ios/hig-patterns/references/playing-video.md +180 -0
- package/skills/ios/hig-patterns/references/printing.md +50 -0
- package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
- package/skills/ios/hig-patterns/references/searching.md +70 -0
- package/skills/ios/hig-patterns/references/settings.md +84 -0
- package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
- package/skills/ios/hig-patterns/references/workouts.md +76 -0
- package/skills/ios/hig-platforms/SKILL.md +84 -0
- package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
- package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
- package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
- package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
- package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
- package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
- package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
- package/skills/ios/hig-project-context/SKILL.md +133 -0
- package/skills/ios/hig-technologies/SKILL.md +107 -0
- package/skills/ios/hig-technologies/references/airplay.md +125 -0
- package/skills/ios/hig-technologies/references/always-on.md +62 -0
- package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
- package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
- package/skills/ios/hig-technologies/references/carekit.md +224 -0
- package/skills/ios/hig-technologies/references/carplay.md +119 -0
- package/skills/ios/hig-technologies/references/game-center.md +343 -0
- package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
- package/skills/ios/hig-technologies/references/healthkit.md +120 -0
- package/skills/ios/hig-technologies/references/homekit.md +343 -0
- package/skills/ios/hig-technologies/references/icloud.md +52 -0
- package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
- package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
- package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
- package/skills/ios/hig-technologies/references/live-photos.md +54 -0
- package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
- package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
- package/skills/ios/hig-technologies/references/maps.md +221 -0
- package/skills/ios/hig-technologies/references/nfc.md +51 -0
- package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
- package/skills/ios/hig-technologies/references/researchkit.md +134 -0
- package/skills/ios/hig-technologies/references/shareplay.md +142 -0
- package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
- package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
- package/skills/ios/hig-technologies/references/siri.md +523 -0
- package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
- package/skills/ios/hig-technologies/references/voiceover.md +90 -0
- package/skills/ios/hig-technologies/references/wallet.md +420 -0
- package/skills/ios/ios-bootstrap/SKILL.md +16 -7
- package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
- package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
- package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
- package/skills/web/accessibility/SKILL.md +146 -0
- package/skills/web/aceternity-ui/SKILL.md +719 -0
- package/skills/web/aceternity-ui/metadata.json +10 -0
- package/skills/web/api-design/SKILL.md +523 -0
- package/skills/web/chart-accessibility/SKILL.md +332 -0
- package/skills/web/composition-patterns/AGENTS.md +946 -0
- package/skills/web/composition-patterns/README.md +60 -0
- package/skills/web/composition-patterns/SKILL.md +89 -0
- package/skills/web/composition-patterns/metadata.json +11 -0
- package/skills/web/composition-patterns/rules/_sections.md +29 -0
- package/skills/web/composition-patterns/rules/_template.md +24 -0
- package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/web/database-migrations/SKILL.md +429 -0
- package/skills/web/deployment-patterns/SKILL.md +427 -0
- package/skills/web/docker-patterns/SKILL.md +364 -0
- package/skills/web/e2e-testing/SKILL.md +326 -0
- package/skills/web/lighthouse-ci/SKILL.md +361 -0
- package/skills/web/mcp-server-patterns/SKILL.md +69 -0
- package/skills/web/next-best-practices/SKILL.md +153 -0
- package/skills/web/next-best-practices/async-patterns.md +87 -0
- package/skills/web/next-best-practices/bundling.md +180 -0
- package/skills/web/next-best-practices/data-patterns.md +297 -0
- package/skills/web/next-best-practices/debug-tricks.md +105 -0
- package/skills/web/next-best-practices/directives.md +73 -0
- package/skills/web/next-best-practices/error-handling.md +227 -0
- package/skills/web/next-best-practices/file-conventions.md +140 -0
- package/skills/web/next-best-practices/font.md +245 -0
- package/skills/web/next-best-practices/functions.md +108 -0
- package/skills/web/next-best-practices/hydration-error.md +91 -0
- package/skills/web/next-best-practices/image.md +173 -0
- package/skills/web/next-best-practices/metadata.md +301 -0
- package/skills/web/next-best-practices/parallel-routes.md +287 -0
- package/skills/web/next-best-practices/route-handlers.md +146 -0
- package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
- package/skills/web/next-best-practices/runtime-selection.md +39 -0
- package/skills/web/next-best-practices/scripts.md +141 -0
- package/skills/web/next-best-practices/self-hosting.md +371 -0
- package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
- package/skills/web/next-cache-components/SKILL.md +411 -0
- package/skills/web/postgres-best-practices/SKILL.md +14 -0
- package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
- package/skills/web/react-best-practices/AGENTS.md +3810 -0
- package/skills/web/react-best-practices/README.md +123 -0
- package/skills/web/react-best-practices/SKILL.md +149 -0
- package/skills/web/react-best-practices/metadata.json +15 -0
- package/skills/web/react-best-practices/rules/_sections.md +46 -0
- package/skills/web/react-best-practices/rules/_template.md +28 -0
- package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
- package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web/seo/SKILL.md +154 -0
- package/skills/web/web-design-guidelines/SKILL.md +39 -0
- package/skills/web/zap-scan-config/SKILL.md +444 -0
- package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
- package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
- package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
- package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
- package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
- package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
- package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
- package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
- package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
- package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
- package/src/lrr/aggregator.ts +80 -0
- package/src/orchestrator/hooks/context-header.ts +95 -0
- package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
- package/src/orchestrator/hooks/token-accounting.ts +101 -0
- package/src/orchestrator/mcp/cycle-counter.ts +129 -0
- package/src/orchestrator/mcp/scribe.ts +283 -0
- package/src/orchestrator/mcp/state-save.ts +149 -0
- package/src/orchestrator/mcp/write-lease.ts +167 -0
- package/src/orchestrator/phase4-shared-context.ts +41 -0
- package/src/orchestrator/schemas/backward-edge.ts +46 -0
- package/agents/agentic-identity-trust.md +0 -121
- package/agents/data-consolidation-agent.md +0 -39
- package/agents/design-image-prompt-engineer.md +0 -105
- package/agents/design-visual-storyteller.md +0 -147
- package/agents/design-whimsy-injector.md +0 -89
- package/agents/engineering-autonomous-optimization-architect.md +0 -105
- package/agents/market-intel.md +0 -35
- package/agents/marketing-instagram-curator.md +0 -111
- package/agents/marketing-reddit-community-builder.md +0 -121
- package/agents/marketing-social-media-strategist.md +0 -74
- package/agents/marketing-tiktok-strategist.md +0 -123
- package/agents/marketing-twitter-engager.md +0 -124
- package/agents/marketing-wechat-official-account.md +0 -143
- package/agents/marketing-xiaohongshu-specialist.md +0 -136
- package/agents/marketing-zhihu-strategist.md +0 -160
- package/agents/product-behavioral-nudge-engine.md +0 -78
- package/agents/project-management-experiment-tracker.md +0 -102
- package/agents/report-distribution-agent.md +0 -43
- package/agents/risk-analysis.md +0 -45
- package/agents/sales-data-extraction-agent.md +0 -46
- package/agents/specialized-cultural-intelligence-strategist.md +0 -65
- package/agents/specialized-developer-advocate.md +0 -146
- package/agents/support-analytics-reporter.md +0 -133
- package/agents/support-executive-summary-generator.md +0 -64
- package/agents/support-finance-tracker.md +0 -145
- package/agents/support-legal-compliance-checker.md +0 -129
- package/agents/support-support-responder.md +0 -91
- package/agents/testing-accessibility-auditor.md +0 -110
- package/agents/testing-test-results-analyzer.md +0 -97
- package/agents/testing-tool-evaluator.md +0 -76
- package/agents/testing-workflow-optimizer.md +0 -99
- package/agents/user-research.md +0 -40
- package/protocols/brainstorm.md +0 -99
- package/protocols/design.md +0 -269
- package/protocols/planning.md +0 -87
- package/skills/ios/ios-hig/SKILL.md +0 -41
- package/skills/ios/ios-hig/references/accessibility.md +0 -81
- package/skills/ios/ios-hig/references/content.md +0 -142
- package/skills/ios/ios-hig/references/feedback.md +0 -123
- package/skills/ios/ios-hig/references/interaction.md +0 -199
- package/skills/ios/ios-hig/references/performance-platform.md +0 -129
- package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
- package/skills/ios/ios-hig/references/visual-design.md +0 -84
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
# ZAP API Security Testing Guide
|
|
2
|
+
|
|
3
|
+
Advanced guide for testing REST, GraphQL, SOAP, and WebSocket APIs using OWASP ZAP.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Modern applications rely heavily on APIs. This guide covers comprehensive API security testing patterns using ZAP's API scanning capabilities.
|
|
8
|
+
|
|
9
|
+
## API Types Supported
|
|
10
|
+
|
|
11
|
+
- **REST APIs** (JSON, XML)
|
|
12
|
+
- **GraphQL APIs**
|
|
13
|
+
- **SOAP APIs** (WSDL-based)
|
|
14
|
+
- **gRPC APIs**
|
|
15
|
+
- **WebSocket APIs**
|
|
16
|
+
|
|
17
|
+
## REST API Testing
|
|
18
|
+
|
|
19
|
+
### Testing with OpenAPI/Swagger Specification
|
|
20
|
+
|
|
21
|
+
**Best Practice:** Always use API specifications when available for complete coverage.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Basic OpenAPI scan
|
|
25
|
+
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
|
|
26
|
+
-t https://api.example.com \
|
|
27
|
+
-f openapi \
|
|
28
|
+
-d /zap/wrk/openapi.yaml \
|
|
29
|
+
-r /zap/wrk/api-report.html
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Testing Without Specification (Spider-Based)
|
|
33
|
+
|
|
34
|
+
When no specification is available:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Use standard spider with API context
|
|
38
|
+
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-full-scan.py \
|
|
39
|
+
-t https://api.example.com \
|
|
40
|
+
-r /zap/wrk/api-report.html \
|
|
41
|
+
-z "-config spider.parseComments=true -config spider.parseRobotsTxt=true"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Authentication Patterns
|
|
45
|
+
|
|
46
|
+
#### Bearer Token (JWT)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Obtain token first
|
|
50
|
+
TOKEN=$(curl -X POST https://api.example.com/auth/login \
|
|
51
|
+
-H "Content-Type: application/json" \
|
|
52
|
+
-d '{"username":"testuser","password":"password"}' \
|
|
53
|
+
| jq -r '.access_token')
|
|
54
|
+
|
|
55
|
+
# Scan with authentication
|
|
56
|
+
python3 scripts/zap_api_scan.py \
|
|
57
|
+
--target https://api.example.com \
|
|
58
|
+
--format openapi \
|
|
59
|
+
--spec openapi.yaml \
|
|
60
|
+
--header "Authorization: Bearer $TOKEN"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### API Key Authentication
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# API key in header
|
|
67
|
+
python3 scripts/zap_api_scan.py \
|
|
68
|
+
--target https://api.example.com \
|
|
69
|
+
--format openapi \
|
|
70
|
+
--spec openapi.yaml \
|
|
71
|
+
--header "X-API-Key: your-api-key-here"
|
|
72
|
+
|
|
73
|
+
# API key in query parameter
|
|
74
|
+
python3 scripts/zap_api_scan.py \
|
|
75
|
+
--target https://api.example.com?api_key=your-api-key \
|
|
76
|
+
--format openapi \
|
|
77
|
+
--spec openapi.yaml
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Common REST API Vulnerabilities
|
|
81
|
+
|
|
82
|
+
#### 1. Broken Object Level Authorization (BOLA)
|
|
83
|
+
|
|
84
|
+
**Detection:** Test access to resources belonging to other users.
|
|
85
|
+
|
|
86
|
+
**Manual Test:**
|
|
87
|
+
```bash
|
|
88
|
+
# Request resource with different user IDs
|
|
89
|
+
curl -H "Authorization: Bearer $USER1_TOKEN" \
|
|
90
|
+
https://api.example.com/users/123/profile
|
|
91
|
+
|
|
92
|
+
curl -H "Authorization: Bearer $USER2_TOKEN" \
|
|
93
|
+
https://api.example.com/users/123/profile # Should be denied
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**ZAP Configuration:**
|
|
97
|
+
Add authorization test scripts to detect BOLA.
|
|
98
|
+
|
|
99
|
+
#### 2. Mass Assignment
|
|
100
|
+
|
|
101
|
+
**Detection:** Send additional fields not in API specification.
|
|
102
|
+
|
|
103
|
+
**Test Payload:**
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"username": "testuser",
|
|
107
|
+
"email": "test@example.com",
|
|
108
|
+
"is_admin": true, # Unauthorized field
|
|
109
|
+
"role": "admin" # Unauthorized field
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### 3. Rate Limiting
|
|
114
|
+
|
|
115
|
+
**Detection:** Send multiple requests rapidly.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Test rate limiting
|
|
119
|
+
for i in {1..100}; do
|
|
120
|
+
curl https://api.example.com/endpoint -H "Authorization: Bearer $TOKEN"
|
|
121
|
+
done
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Expected:** HTTP 429 (Too Many Requests) after threshold.
|
|
125
|
+
|
|
126
|
+
## GraphQL API Testing
|
|
127
|
+
|
|
128
|
+
### Testing with GraphQL Schema
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Scan GraphQL endpoint with schema
|
|
132
|
+
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
|
|
133
|
+
-t https://api.example.com/graphql \
|
|
134
|
+
-f graphql \
|
|
135
|
+
-d /zap/wrk/schema.graphql \
|
|
136
|
+
-r /zap/wrk/graphql-report.html
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### GraphQL Introspection
|
|
140
|
+
|
|
141
|
+
**Check if introspection is enabled:**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
curl -X POST https://api.example.com/graphql \
|
|
145
|
+
-H "Content-Type: application/json" \
|
|
146
|
+
-d '{"query": "{ __schema { types { name } } }"}'
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Security Note:** Disable introspection in production.
|
|
150
|
+
|
|
151
|
+
### GraphQL-Specific Vulnerabilities
|
|
152
|
+
|
|
153
|
+
#### 1. Query Depth/Complexity Attacks
|
|
154
|
+
|
|
155
|
+
**Malicious Query:**
|
|
156
|
+
```graphql
|
|
157
|
+
query {
|
|
158
|
+
user {
|
|
159
|
+
posts {
|
|
160
|
+
comments {
|
|
161
|
+
author {
|
|
162
|
+
posts {
|
|
163
|
+
comments {
|
|
164
|
+
author {
|
|
165
|
+
# ... deeply nested
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Mitigation:** Implement query depth/complexity limits.
|
|
177
|
+
|
|
178
|
+
#### 2. Batch Query Attacks
|
|
179
|
+
|
|
180
|
+
**Malicious Query:**
|
|
181
|
+
```graphql
|
|
182
|
+
query {
|
|
183
|
+
user1: user(id: 1) { name email }
|
|
184
|
+
user2: user(id: 2) { name email }
|
|
185
|
+
# ... repeated hundreds of times
|
|
186
|
+
user500: user(id: 500) { name email }
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Mitigation:** Limit batch query size.
|
|
191
|
+
|
|
192
|
+
#### 3. Field Suggestions
|
|
193
|
+
|
|
194
|
+
When introspection is disabled, test field suggestions:
|
|
195
|
+
|
|
196
|
+
```graphql
|
|
197
|
+
query {
|
|
198
|
+
user {
|
|
199
|
+
nam # Intentional typo to trigger suggestions
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## SOAP API Testing
|
|
205
|
+
|
|
206
|
+
### Testing with WSDL
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# SOAP API scan with WSDL
|
|
210
|
+
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
|
|
211
|
+
-t https://api.example.com/soap \
|
|
212
|
+
-f soap \
|
|
213
|
+
-d /zap/wrk/service.wsdl \
|
|
214
|
+
-r /zap/wrk/soap-report.html
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### SOAP-Specific Vulnerabilities
|
|
218
|
+
|
|
219
|
+
#### 1. XML External Entity (XXE)
|
|
220
|
+
|
|
221
|
+
**Test Payload:**
|
|
222
|
+
```xml
|
|
223
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
224
|
+
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
|
|
225
|
+
<soap:Envelope>
|
|
226
|
+
<soap:Body>
|
|
227
|
+
<login>
|
|
228
|
+
<username>&xxe;</username>
|
|
229
|
+
</login>
|
|
230
|
+
</soap:Body>
|
|
231
|
+
</soap:Envelope>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### 2. XML Injection
|
|
235
|
+
|
|
236
|
+
**Test Payload:**
|
|
237
|
+
```xml
|
|
238
|
+
<username>admin</username><role>admin</role></user><user><username>attacker</username>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## WebSocket Testing
|
|
242
|
+
|
|
243
|
+
### Manual WebSocket Testing
|
|
244
|
+
|
|
245
|
+
ZAP can intercept WebSocket traffic:
|
|
246
|
+
|
|
247
|
+
1. Configure browser proxy to ZAP
|
|
248
|
+
2. Connect to WebSocket endpoint
|
|
249
|
+
3. Review messages in ZAP's WebSocket tab
|
|
250
|
+
4. Manually craft malicious messages
|
|
251
|
+
|
|
252
|
+
### Common WebSocket Vulnerabilities
|
|
253
|
+
|
|
254
|
+
- **Message Injection:** Inject malicious payloads in WebSocket messages
|
|
255
|
+
- **Authentication Bypass:** Test if authentication is required for WebSocket connections
|
|
256
|
+
- **Message Tampering:** Modify messages in transit
|
|
257
|
+
|
|
258
|
+
## API Security Testing Checklist
|
|
259
|
+
|
|
260
|
+
### Authentication & Authorization
|
|
261
|
+
|
|
262
|
+
- [ ] Test unauthenticated access to protected endpoints
|
|
263
|
+
- [ ] Test authorization bypass (access other users' data)
|
|
264
|
+
- [ ] Test JWT token validation (expiration, signature)
|
|
265
|
+
- [ ] Test API key validation
|
|
266
|
+
- [ ] Test role-based access control (RBAC)
|
|
267
|
+
|
|
268
|
+
### Input Validation
|
|
269
|
+
|
|
270
|
+
- [ ] Test SQL injection in parameters
|
|
271
|
+
- [ ] Test NoSQL injection (MongoDB, etc.)
|
|
272
|
+
- [ ] Test command injection
|
|
273
|
+
- [ ] Test XML injection (for SOAP APIs)
|
|
274
|
+
- [ ] Test mass assignment vulnerabilities
|
|
275
|
+
- [ ] Test parameter pollution
|
|
276
|
+
|
|
277
|
+
### Rate Limiting & DoS
|
|
278
|
+
|
|
279
|
+
- [ ] Verify rate limiting is enforced
|
|
280
|
+
- [ ] Test resource exhaustion (large payloads)
|
|
281
|
+
- [ ] Test query complexity limits (GraphQL)
|
|
282
|
+
- [ ] Test batch request limits
|
|
283
|
+
|
|
284
|
+
### Data Exposure
|
|
285
|
+
|
|
286
|
+
- [ ] Check for sensitive data in responses
|
|
287
|
+
- [ ] Test verbose error messages
|
|
288
|
+
- [ ] Verify PII is properly protected
|
|
289
|
+
- [ ] Check for data leakage in logs
|
|
290
|
+
|
|
291
|
+
### Transport Security
|
|
292
|
+
|
|
293
|
+
- [ ] Verify HTTPS is enforced
|
|
294
|
+
- [ ] Test TLS configuration (strong ciphers only)
|
|
295
|
+
- [ ] Check certificate validation
|
|
296
|
+
- [ ] Verify HSTS header is set
|
|
297
|
+
|
|
298
|
+
### Business Logic
|
|
299
|
+
|
|
300
|
+
- [ ] Test state manipulation
|
|
301
|
+
- [ ] Test payment flow manipulation
|
|
302
|
+
- [ ] Test workflow bypass
|
|
303
|
+
- [ ] Test negative values/amounts
|
|
304
|
+
|
|
305
|
+
## ZAP Automation for API Testing
|
|
306
|
+
|
|
307
|
+
### Automation Framework Configuration
|
|
308
|
+
|
|
309
|
+
`api_automation.yaml`:
|
|
310
|
+
|
|
311
|
+
```yaml
|
|
312
|
+
env:
|
|
313
|
+
contexts:
|
|
314
|
+
- name: API-Context
|
|
315
|
+
urls:
|
|
316
|
+
- https://api.example.com
|
|
317
|
+
includePaths:
|
|
318
|
+
- https://api.example.com/.*
|
|
319
|
+
authentication:
|
|
320
|
+
method: header
|
|
321
|
+
parameters:
|
|
322
|
+
header: Authorization
|
|
323
|
+
value: "Bearer ${API_TOKEN}"
|
|
324
|
+
|
|
325
|
+
jobs:
|
|
326
|
+
- type: openapi
|
|
327
|
+
parameters:
|
|
328
|
+
apiFile: /zap/wrk/openapi.yaml
|
|
329
|
+
apiUrl: https://api.example.com
|
|
330
|
+
targetUrl: https://api.example.com
|
|
331
|
+
context: API-Context
|
|
332
|
+
|
|
333
|
+
- type: passiveScan-wait
|
|
334
|
+
|
|
335
|
+
- type: activeScan
|
|
336
|
+
parameters:
|
|
337
|
+
context: API-Context
|
|
338
|
+
policy: API-Scan-Policy
|
|
339
|
+
user: api-user
|
|
340
|
+
|
|
341
|
+
- type: report
|
|
342
|
+
parameters:
|
|
343
|
+
template: traditional-html
|
|
344
|
+
reportDir: /zap/wrk/
|
|
345
|
+
reportFile: api-security-report.html
|
|
346
|
+
reportTitle: API Security Assessment
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
Run:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
export API_TOKEN="your-token-here"
|
|
353
|
+
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable \
|
|
354
|
+
zap.sh -cmd -autorun /zap/wrk/api_automation.yaml
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## Custom API Scan Policies
|
|
358
|
+
|
|
359
|
+
### Create API-Optimized Scan Policy
|
|
360
|
+
|
|
361
|
+
Disable irrelevant checks for APIs:
|
|
362
|
+
- Disable DOM XSS checks (no browser context)
|
|
363
|
+
- Disable CSRF checks (stateless APIs)
|
|
364
|
+
- Enable injection checks (SQL, NoSQL, Command)
|
|
365
|
+
- Enable authentication/authorization checks
|
|
366
|
+
|
|
367
|
+
See `assets/scan_policy_api.policy` for pre-configured policy.
|
|
368
|
+
|
|
369
|
+
## API Testing Tools Integration
|
|
370
|
+
|
|
371
|
+
### Postman Integration
|
|
372
|
+
|
|
373
|
+
Export Postman collection to OpenAPI:
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Use Postman's built-in export or newman
|
|
377
|
+
newman run collection.json --export-collection openapi.yaml
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### cURL to OpenAPI Conversion
|
|
381
|
+
|
|
382
|
+
Use tools like `curl-to-openapi` to generate specs from cURL commands.
|
|
383
|
+
|
|
384
|
+
## Common API Testing Patterns
|
|
385
|
+
|
|
386
|
+
### Pattern 1: CRUD Operation Testing
|
|
387
|
+
|
|
388
|
+
Test all CRUD operations for each resource:
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
# CREATE
|
|
392
|
+
curl -X POST https://api.example.com/users \
|
|
393
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
394
|
+
-d '{"username":"testuser"}'
|
|
395
|
+
|
|
396
|
+
# READ
|
|
397
|
+
curl https://api.example.com/users/123 \
|
|
398
|
+
-H "Authorization: Bearer $TOKEN"
|
|
399
|
+
|
|
400
|
+
# UPDATE
|
|
401
|
+
curl -X PUT https://api.example.com/users/123 \
|
|
402
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
403
|
+
-d '{"username":"updated"}'
|
|
404
|
+
|
|
405
|
+
# DELETE
|
|
406
|
+
curl -X DELETE https://api.example.com/users/123 \
|
|
407
|
+
-H "Authorization: Bearer $TOKEN"
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Pattern 2: Multi-User Testing
|
|
411
|
+
|
|
412
|
+
Test with different user roles:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
# Admin user
|
|
416
|
+
export ADMIN_TOKEN="admin-token"
|
|
417
|
+
python3 scripts/zap_api_scan.py --target https://api.example.com \
|
|
418
|
+
--header "Authorization: Bearer $ADMIN_TOKEN"
|
|
419
|
+
|
|
420
|
+
# Regular user
|
|
421
|
+
export USER_TOKEN="user-token"
|
|
422
|
+
python3 scripts/zap_api_scan.py --target https://api.example.com \
|
|
423
|
+
--header "Authorization: Bearer $USER_TOKEN"
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Pattern 3: Versioned API Testing
|
|
427
|
+
|
|
428
|
+
Test all API versions:
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
# v1
|
|
432
|
+
python3 scripts/zap_api_scan.py --target https://api.example.com/v1 \
|
|
433
|
+
--spec openapi-v1.yaml
|
|
434
|
+
|
|
435
|
+
# v2
|
|
436
|
+
python3 scripts/zap_api_scan.py --target https://api.example.com/v2 \
|
|
437
|
+
--spec openapi-v2.yaml
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
## Troubleshooting API Scans
|
|
441
|
+
|
|
442
|
+
### Issue: OpenAPI Import Fails
|
|
443
|
+
|
|
444
|
+
**Solution:** Validate OpenAPI spec:
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# Use Swagger Editor or openapi-validator
|
|
448
|
+
npx @apidevtools/swagger-cli validate openapi.yaml
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Issue: Authentication Not Working
|
|
452
|
+
|
|
453
|
+
**Solution:** Test authentication manually first:
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
curl -v https://api.example.com/protected-endpoint \
|
|
457
|
+
-H "Authorization: Bearer $TOKEN"
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Issue: Rate Limiting During Scan
|
|
461
|
+
|
|
462
|
+
**Solution:** Reduce scan speed:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
docker run -t zaproxy/zap-stable zap-api-scan.py \
|
|
466
|
+
-t https://api.example.com -f openapi -d /zap/wrk/spec.yaml \
|
|
467
|
+
-z "-config scanner.delayInMs=1000"
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
## Additional Resources
|
|
471
|
+
|
|
472
|
+
- [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
|
|
473
|
+
- [REST API Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html)
|
|
474
|
+
- [GraphQL Security](https://graphql.org/learn/authorization/)
|
|
475
|
+
- [ZAP OpenAPI Add-on](https://www.zaproxy.org/docs/desktop/addons/openapi-support/)
|