{"id":1176,"date":"2025-10-22T14:07:22","date_gmt":"2025-10-22T12:07:22","guid":{"rendered":"https:\/\/ackee.xyz\/blog\/?p=1176"},"modified":"2025-11-11T15:48:14","modified_gmt":"2025-11-11T13:48:14","slug":"introducing-the-first-vs-code-extension-for-solana-developers","status":"publish","type":"post","link":"https:\/\/ackee.xyz\/blog\/introducing-the-first-vs-code-extension-for-solana-developers\/","title":{"rendered":"Introducing the First VS Code Extension for Solana Developers"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Solana development moves fast. Contracts go from local testing to mainnet in days. But speed creates risk: missing a signer check or overlooking an untested edge case can cost millions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Today, we&#8217;re launching the first VS Code extension explicitly built for Solana developers. It brings two essential security layers directly into your editor: <\/span><b>real-time static analysis and fuzz coverage visualization<\/b><span style=\"font-weight: 400;\">. <\/span><span style=\"font-weight: 400;\">Get instant feedback as you code, without separate tools or CI\/CD delays.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1192\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/SolanaExtensionforGif.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<h2><b>What it is<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The Solana VS Code extension adds security-focused development tools to your existing workflow. It runs two main features:<\/span><\/p>\n<p><b>Real-time security analysis<\/b><span style=\"font-weight: 400;\"> catches common Solana-specific vulnerabilities as you type. Nine detectors built from findings in actual production audits flag issues like missing signer checks, unsafe math operations, and improper account initialization before you even compile.<\/span><\/p>\n<p><b>Fuzz coverage visualization<\/b><span style=\"font-weight: 400;\"> shows which code paths your <\/span><a href=\"https:\/\/usetrident.xyz\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Trident<\/span><\/a><span style=\"font-weight: 400;\"> tests actually exercise. Green highlights mark covered lines. Red highlights show untested paths. Execution counts reveal how thoroughly each line is tested.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Both features integrate directly into VS Code with zero configuration. Open your Solana project, and the extension works immediately.<\/span><\/p>\n<h2><b>Real-time security analysis<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The Rust extension can catch syntax errors. It can&#8217;t catch Solana-specific security issues.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Consider this code:<\/span><\/p>\n<pre><code class=\"language-rust\">#[derive(Accounts)]\npub struct UpdateConfig&lt;&#039;info&gt; {\n    #[account(mut)]\n    pub authority: AccountInfo&lt;&#039;info&gt;,\n    #[account(mut)]\n    pub config: Account&lt;&#039;info, Config&gt;,\n}\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">It compiles. It runs. But there&#8217;s a critical vulnerability: the authority account lacks signer verification. Anyone can call this instruction and modify the config.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Solana extension flags it immediately with a red squiggle and a precise diagnostic: &#8220;Missing signer check on authority account.&#8221;<\/span><\/p>\n<h3><b>The nine detectors<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Each detector targets vulnerabilities found in real Solana protocol audits:<\/span><\/p>\n<ol>\n<li><b> Missing signer verification<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Catches accounts that need signer checks but don&#8217;t have them. Without verification, privileged functions become public.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1186\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/missing_signer.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<ol start=\"2\">\n<li><b> Missing InitSpace<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Detects account creation without proper space initialization. Prevents runtime failures when accounts don&#8217;t have enough allocated space. Critical for programs using Anchor&#8217;s <\/span><span style=\"font-weight: 400;\">init<\/span><span style=\"font-weight: 400;\"> constraint.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1185\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/init_space_missing.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<ol start=\"3\">\n<li><b> Unsafe math operations<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Flags arithmetic that could overflow or underflow:<\/span><\/p>\n<pre><code class=\"language-rust\">let total = amount1 + amount2;  \/\/ Flagged - no overflow protection<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">The extension suggests using <code class=\"codehl\">checked_add()<\/code>, <code class=\"codehl\">checked_sub()<\/code> or <code class=\"codehl\">checked_mul()<\/code><\/span><span style=\"font-weight: 400;\">\u00a0instead.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1189\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/uncheked_math.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<ol start=\"4\">\n<li><b> Manual lamports zeroing<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Detects unsafe manual lamports manipulation. Manually zeroing lamports can bypass security checks and create vulnerabilities. The extension recommends using proper close patterns.<\/span><\/p>\n<ol start=\"5\">\n<li><b> Immutable account mutations<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Catches attempts to modify accounts marked as immutable:<\/span><\/p>\n<pre><code class=\"language-rust\">#[account]\npub config: Account&lt;&#039;info, Config&gt;,  \/\/ Immutable by default\n\/\/ Later in code...\nconfig.update();  \/\/ Flagged - attempting to mutate immutable account<\/code><\/pre>\n<ol start=\"6\">\n<li><b> Invalid instruction attributes<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Detects incorrectly configured instruction attributes. Prevents runtime errors from malformed instruction definitions before compilation.<\/span><\/p>\n<ol start=\"7\">\n<li><b> Unused instruction attributes<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Finds instruction attributes defined but never used. Often indicates incomplete implementation or copy-paste errors. Clean code means fewer bugs.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1190\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/unused_instruction_parameter.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<ol start=\"8\">\n<li><b> Improper sysvar account access<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Detects incorrect methods for accessing sysvar accounts. Using wrong access patterns causes transaction failures. The extension ensures you follow Solana best practices.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1188\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/sysvar_usage.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<ol start=\"9\">\n<li><b> Missing security check comments<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Flags critical code sections without security documentation. Important for audits and code reviews. Documents why security-sensitive operations are safe.<\/span><\/p>\n<h3><b>How it works<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">The extension runs a Rust-based language server that parses your Solana programs and applies the nine detectors. Analysis happens on every keystroke.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When a detector finds an issue, you see:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Red squiggle under the problematic code<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Diagnostic message explaining the issue<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Quick access via keyboard shortcut (Ctrl+Alt+S \/ Cmd+Alt+S)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">All detectors are enabled by default. No setup required.<\/span><\/p>\n<h2><b>Fuzz coverage visualization<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Unit tests verify specific scenarios. Fuzz tests generate thousands of random inputs to find edge cases. But without visibility, you don&#8217;t know what your fuzzer actually tests.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Solana extension integrates with <a href=\"https:\/\/usetrident.xyz\" target=\"_blank\" rel=\"noopener\">Trident<\/a> to show exactly which code paths your fuzz tests cover.<\/span><\/p>\n<h3><b>Visual coverage in your editor<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">After running Trident tests with coverage enabled, open the coverage view in VS Code. Your program code displays with color-coded highlights:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Green lines<\/b><span style=\"font-weight: 400;\">: Covered by your <a href=\"https:\/\/usetrident.xyz\" target=\"_blank\" rel=\"noopener\">Trident<\/a> tests<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Red lines<\/b><span style=\"font-weight: 400;\">: Untested code paths<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Execution counts<\/b><span style=\"font-weight: 400;\">: Number of times each line executed<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">This reveals gaps immediately. Error handling branches show zero coverage. Complex liquidation sequences remain untested. Overflow protection sits unexercised.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1187\" src=\"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2025\/10\/SolanaEXT-visualization-ezgif.com-video-to-gif-converter.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<h3><b>Real example<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Consider a lending protocol with deposit, withdraw, and liquidation functions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Initial coverage showed green across all deposit and withdraw operations. The team felt confident. Core functionality was thoroughly tested. <\/span><span style=\"font-weight: 400;\">But complex liquidation sequences showed red. The fuzzer wasn&#8217;t exercising the edge cases where liquidations interact with pending withdrawals.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">They added targeted <a href=\"https:\/\/usetrident.xyz\" target=\"_blank\" rel=\"noopener\">Trident<\/a> flows for those scenarios. Re-ran coverage. The paths turned green. <\/span><span style=\"font-weight: 400;\">Then the fuzzer found it: a <strong>critical accounting bug<\/strong> <strong>in the liquidation logic that allowed double-spending<\/strong> under specific timing conditions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Without coverage visualization, that bug would have shipped to mainnet.<\/span><\/p>\n<h3><b>How to use it<\/b><\/h3>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Write your <a href=\"https:\/\/usetrident.xyz\" target=\"_blank\" rel=\"noopener\">Trident<\/a> fuzz tests<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Run tests with coverage collection enabled<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Open coverage in VS Code using the command palette<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Identify red (untested) paths<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Add flows targeting those paths<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Re-run and verify coverage improved<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Repeat until critical paths are covered<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">The visualization updates in real-time as you modify tests. No separate tool or context switching required.<\/span><\/p>\n<h2><b>Why you need this<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Solana development operates at the intersection of high speed and high stakes. Even experienced developers miss things. Code reviews miss things. Unit tests miss edge cases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This extension doesn&#8217;t replace audits or comprehensive testing. It adds two more security checks before production:<\/span><\/p>\n<p><b>Static analysis catches common bugs as you type.<\/b><span style=\"font-weight: 400;\"> Get immediate feedback in your editor rather than waiting for CI\/CD pipelines or discovering issues during an expensive audit.<\/span><\/p>\n<p><b>Coverage visualization shows gaps in your fuzz tests.<\/b><span style=\"font-weight: 400;\"> Understand what your tests actually exercise, identify what they miss, and test with intention rather than hope.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Think of it as defense-in-depth:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Layer 1: Anchor framework constraints<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Layer 2: Static analysis (this extension)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Layer 3: Fuzz coverage visualization (this extension)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Layer 4: Integration tests<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Layer 5: Security audits<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">This extension adds Layers 2 and 3. All layers work together. No single layer is enough.<\/span><\/p>\n<h3><b>Built by auditors<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">The nine detectors come from real findings in production Solana audits. They catch issues we&#8217;ve seen cost protocols millions. <\/span><span style=\"font-weight: 400;\">The coverage visualization integrates with <a href=\"https:\/\/usetrident.xyz\" target=\"_blank\" rel=\"noopener\">Trident<\/a>, the fuzzing framework we built and use for security testing Solana programs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We built these tools because we needed them. Now they&#8217;re available to every Solana developer.<\/span><\/p>\n<h2><b>How to install<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The extension is available now on the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=AckeeBlockchain.solana\" target=\"_blank\" rel=\"noopener\">VS Code Marketplace<\/a>.<\/span><\/p>\n<p><b>Option 1: VS Code Marketplace<\/b><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Open VS Code<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Go to Extensions (Ctrl+Shift+X \/ Cmd+Shift+X)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Search for &#8220;Solana&#8221;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Open the 1st <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=AckeeBlockchain.solana\" target=\"_blank\" rel=\"noopener\">result<\/a> (developed by <a href=\"https:\/\/ackee.xyz\" target=\"_blank\" rel=\"noopener\">Ackee Blockchain Security<\/a>)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click Install<\/span><\/li>\n<\/ol>\n<p><b>Option 2: Command Line<\/b><\/p>\n<p><span style=\"font-weight: 400;\">code<\/span> <span style=\"font-weight: 400;\">&#8211;install-extension<\/span> <span style=\"font-weight: 400;\">ackee.solana<\/span><\/p>\n<p><b>Requirements:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Visual Studio Code 1.96.0 or newer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Rust and Cargo (latest stable) for security scanning<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Trident tests in your workspace for coverage features<\/span><\/li>\n<\/ul>\n<h3><b>Quick-start commands<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">After installation, access features via command palette (Ctrl+Shift+P \/ Cmd+Shift+P):<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">solana: Scan Workspace for Security Issues<\/span><span style=\"font-weight: 400;\"> (Ctrl+Alt+S \/ Cmd+Alt+S)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">solana: Reload Security Detectors<\/span><span style=\"font-weight: 400;\"> (Ctrl+Alt+R \/ Cmd+Alt+R)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">solana: Show Code Coverage<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">solana: Close Code Coverage<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">solana: Show Security Scan Output<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Security scanning runs automatically as you type. Coverage requires running your <a href=\"https:\/\/usetrident.xyz\">Trident<\/a> tests first.<\/span><\/p>\n<h2><b>Roadmap<\/b><\/h2>\n<p><i><span style=\"font-weight: 400;\">[Coming soon: We&#8217;re actively developing additional features based on community feedback and our audit experience. Follow<\/span><\/i> <a href=\"https:\/\/twitter.com\/AckeeBlockchain\"><i><span style=\"font-weight: 400;\">@AckeeBlockchain<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> for updates on new detectors, enhanced coverage features, and integration improvements.]<\/span><\/i><\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Solana developers no longer have to choose between speed and security.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=AckeeBlockchain.solana\" target=\"_blank\" rel=\"noopener\">Solana VS Code extension<\/a> adds real-time security analysis and fuzz coverage visualization directly to your workflow. Catch vulnerabilities as you code. See gaps in your test coverage. Ship with confidence.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It&#8217;s free and open-source and integrates with your existing workflow.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Built by the team behind School of Solana and Trident. Professional security tools from auditors who secure production protocols.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Install now from the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=AckeeBlockchain.solana\" target=\"_blank\" rel=\"noopener\">VS Code Marketplace<\/a> and start catching vulnerabilities before they reach production.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solana development moves fast. Contracts go from local testing to mainnet in days. But speed creates risk: missing a signer check or overlooking an untested edge case can cost millions. Today, we&#8217;re launching the first VS Code extension explicitly built for Solana developers. It brings two essential security layers directly into your editor: real-time static analysis and fuzz coverage visualization. Get instant&hellip;<\/p>\n","protected":false},"author":30,"featured_media":1181,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65,5,113],"tags":[123,6,19],"class_list":["post-1176","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-solana","category-trident","tag-developer-tooling","tag-solana","tag-solana-security"],"aioseo_notices":[],"featured_image_src":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/10\/solana-cover-1-600x400.png","featured_image_src_square":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2025\/10\/solana-cover-1-600x600.png","author_info":{"display_name":"Tom\u00e1\u0161 Kova\u0159\u00edk","author_link":"https:\/\/ackee.xyz\/blog\/author\/tomas-kovarik\/"},"_links":{"self":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/1176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/comments?post=1176"}],"version-history":[{"count":0,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/1176\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media\/1181"}],"wp:attachment":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media?parent=1176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/categories?post=1176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/tags?post=1176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}