Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2039 commits
Select commit Hold shift + click to select a range
ffd842a
Soften emphasis and fix jsr-ref tildes in tasks.md
2chanhaeng Jul 1, 2026
7ccdc0d
Clarify that deduplicationKey only requests dedup
2chanhaeng Jul 1, 2026
77109fe
Reject dedup batch on cas path through wrapper
2chanhaeng Jul 1, 2026
2703445
Support deduplicationKey for task enqueue
2chanhaeng Jun 14, 2026
3117772
Add OpenTelemetry observability to custom tasks
2chanhaeng Jun 20, 2026
3fb3d8b
Drop the build step from the Deno test task
2chanhaeng Jun 11, 2026
72929a6
Record only terminal task failures in telemetry
2chanhaeng Jul 4, 2026
c7c512d
Make task enqueue metrics survive partial fan-out
2chanhaeng Jul 4, 2026
f590b30
Fix docs and versions
2chanhaeng Jul 4, 2026
728d480
Clarify result type of `FederationImpl.metrics`
2chanhaeng Jul 6, 2026
89a1a67
Clarify task telemetry semantics in docs and code
2chanhaeng Jul 6, 2026
b48b549
Distinguish task retry re-enqueue failures
2chanhaeng Jul 6, 2026
0052bb9
Deduplicate queue worker-boundary instrumentation
2chanhaeng Jul 6, 2026
b37fdfd
Add `wait_for = ["build"]` in `tasks."test:deno"`
2chanhaeng Jul 6, 2026
6eb234c
Deflake the stale-rollback dedup marker test
2chanhaeng Jul 6, 2026
eae895c
Combine duplicate `@fedify/fedify` sections in `Version 2.4.0` and ad…
2chanhaeng Jul 7, 2026
3b0a453
Revive `To be released.`
2chanhaeng Jul 7, 2026
2c99806
Update `markdown-it-jsr-ref` version to 0.5.0
2chanhaeng Jul 7, 2026
1a6f31c
Merge pull request #923 from fedify-dev/feat/custom-worker
dahlia Jul 7, 2026
2b31231
Compare portable ActivityPub URIs
dahlia Jul 7, 2026
e8b53a3
Preserve portable URI path identity
dahlia Jul 7, 2026
5a6b24a
Require raw portable URI strings
dahlia Jul 7, 2026
935905e
Document portable URI comparison details
dahlia Jul 7, 2026
1df7565
Compare portable URI strings defensively
dahlia Jul 7, 2026
00573e5
Document portable URI comparison API
dahlia Jul 7, 2026
8c6cc4c
Harden portable URI equality checks
dahlia Jul 7, 2026
8478f3b
Reject invalid portable URI escapes
dahlia Jul 7, 2026
ca7b4ee
Decode unreserved portable DID escapes
dahlia Jul 7, 2026
db0b49c
Decode unreserved portable path escapes
dahlia Jul 7, 2026
faeab95
Simplify portable component matching
dahlia Jul 7, 2026
bb4c816
Treat malformed portable components as invalid
dahlia Jul 7, 2026
bf5132d
Bundle Temporal for CommonJS
dahlia Jul 7, 2026
dc23050
Tighten Temporal build review fixes
dahlia Jul 7, 2026
1fe0512
Tighten Temporal review follow-ups
dahlia Jul 7, 2026
f1e5792
Merge pull request #925 from dahlia/issue-823-temporal-polyfill
dahlia Jul 8, 2026
7b19967
Merge pull request #924 from dahlia/feat/fep-ef61/ap-uris
dahlia Jul 8, 2026
03782a5
Merge remote-tracking branch 'fedify-dev/main'
dahlia Jul 8, 2026
44441b5
Support FE34 cryptographic origins
dahlia Jul 8, 2026
a436473
Tighten FE34 DID origin checks
dahlia Jul 8, 2026
6d569d5
Normalize DID origin escapes
dahlia Jul 8, 2026
c87db61
Include Fedify skill in npm artifacts
dahlia Jul 8, 2026
c8eb20e
Merge branch '2.3-maintenance'
dahlia Jul 8, 2026
a974c7d
Merge pull request #926 from dahlia/feat/fep-ef61/ap-uri-crypto-origins
dahlia Jul 9, 2026
5ed2733
Support the ActivityPub Media Upload extension
dahlia Jul 8, 2026
72d9542
Harden media upload handler failure handling
dahlia Jul 8, 2026
722b634
Accept Promise-wrapped media uploader returns
dahlia Jul 8, 2026
d8f1065
Unwrap type assertions and parens in the lint rule
dahlia Jul 8, 2026
c7d33a1
Avoid teeing the upload body during authorization
dahlia Jul 8, 2026
432064b
Reject plain object literals in media upload lint
dahlia Jul 8, 2026
6e62d5a
Buffer the upload once for authorization
dahlia Jul 9, 2026
2633565
Resolve the actor before authorizing uploads
dahlia Jul 9, 2026
9b57611
Reject destructured getObjectUri in upload lint
dahlia Jul 9, 2026
612ca3d
Add FEP-ef61 portable object vocabulary
dahlia Jul 9, 2026
5aa4a50
Document media upload's actor-first ordering
dahlia Jul 9, 2026
cd8abc8
Preserve FEP-ef61 media digests
dahlia Jul 9, 2026
8fdd9a0
Warn when a media uploader has no authorize hook
dahlia Jul 9, 2026
8e16018
Validate FEP-ef61 gateway URIs
dahlia Jul 9, 2026
1840cf4
Encode gateway URLs as IRI references
dahlia Jul 9, 2026
c6adead
Tighten FEP-ef61 gateway references
dahlia Jul 9, 2026
bb6e70d
Avoid digestMultibase context conflicts
dahlia Jul 9, 2026
5885824
Merge pull request #927 from dahlia/media-upload-ext
dahlia Jul 9, 2026
6a919ba
Define interaction control types
dahlia Jul 9, 2026
b9d89e3
Add like interaction helpers
dahlia Jul 9, 2026
019063c
Add reply interaction helpers
dahlia Jul 9, 2026
a5648cd
Add announce interaction helpers
dahlia Jul 9, 2026
fb4b235
Add quote interaction helpers
dahlia Jul 9, 2026
dc1a770
Add feature interaction helpers
dahlia Jul 9, 2026
3359b92
Document interaction controls
dahlia Jul 9, 2026
38f0a9f
Fix interaction controls docs build
dahlia Jul 9, 2026
559fe08
Hide interaction controls Twoslash setup
dahlia Jul 9, 2026
3d87f7a
Remove duplicate interaction controls references
dahlia Jul 9, 2026
d63c483
Add interaction controls flow diagram
dahlia Jul 9, 2026
0a09d5c
Accept FEP-7aa9 feature approvals
dahlia Jul 9, 2026
c0eaa56
Fail closed on authorization grantors
dahlia Jul 9, 2026
49815c2
Validate interaction request instruments
dahlia Jul 9, 2026
8b5765f
Harden interaction request verification
dahlia Jul 9, 2026
e011a56
Harden interaction authorization checks
dahlia Jul 10, 2026
9bacb9e
Reject opaque authorization origins
dahlia Jul 10, 2026
e802dc1
Split opaque origin authorization tests
dahlia Jul 10, 2026
224a791
Harden interaction verification failures
dahlia Jul 10, 2026
2c2b5f2
Honor portable authorization origins
dahlia Jul 10, 2026
8e99bbb
Use context loaders for verification
dahlia Jul 10, 2026
563aaa7
Deny quotes without canQuote
dahlia Jul 10, 2026
4d93930
Approve reply participants implicitly
dahlia Jul 10, 2026
134dee8
Tighten interaction policy evaluation
dahlia Jul 10, 2026
d5b2d92
Fail closed on interaction verification gaps
dahlia Jul 10, 2026
0e10800
Harden interaction remote checks
dahlia Jul 10, 2026
aa58154
Fail closed after manual interaction checks
dahlia Jul 10, 2026
e8879db
Keep authorization origin fallback broad
dahlia Jul 10, 2026
f58bfde
Resolve interaction loader typing gaps
dahlia Jul 10, 2026
6ac44ef
List interaction controls in package indexes
dahlia Jul 10, 2026
3b4bfbb
Merge pull request #928 from dahlia/feat/fep-ef61/vocab-terms
dahlia Jul 11, 2026
aa87660
Add portable media digest helpers
dahlia Jul 11, 2026
1813bc8
Avoid copying non-shared digest input
dahlia Jul 11, 2026
6674c5f
Recognize shared buffers across realms
dahlia Jul 11, 2026
1de6933
Harden digest buffer detection
dahlia Jul 11, 2026
f3640b6
Avoid repeated digest validation
dahlia Jul 11, 2026
af76c9d
Guard digest buffer brand detection
dahlia Jul 11, 2026
ba422f5
Reject line breaks in simple hashlinks
dahlia Jul 11, 2026
4815b9d
Accept hashlink URLs across realms
dahlia Jul 11, 2026
fec3950
Bound digest multibase input length
dahlia Jul 11, 2026
b8f3c3d
Merge pull request #935 from dahlia/feat/fep-ef61/digest-multibase
dahlia Jul 12, 2026
3e4f121
change fedify init order
SJang1 Jul 13, 2026
3357fa1
fix duplicate Hono writing
SJang1 Jul 13, 2026
c17d8ed
add Nuxt and SolidStart as available web framework
SJang1 Jul 13, 2026
c20a23e
Merge pull request #929 from dahlia/packages/interaction-controls
dahlia Jul 13, 2026
30f329d
Merge pull request #939 from SJang1/patch-1
dahlia Jul 13, 2026
0b20368
Merge branch '2.0-maintenance' into 2.1-maintenance
dahlia Jul 13, 2026
13f1d27
Merge branch '2.1-maintenance' into 2.2-maintenance
dahlia Jul 13, 2026
b9733d7
Merge branch '2.2-maintenance' into 2.3-maintenance
dahlia Jul 13, 2026
174945f
Merge remote-tracking branch 'refs/remotes/fedify-dev/main'
dahlia Jul 13, 2026
c0e9b47
Merge branch '2.3-maintenance'
dahlia Jul 13, 2026
2c95734
Upgrade @hongminhee/localtunnel to 0.5.0
dahlia Jul 13, 2026
5f389af
Add the Fedify tunnel service
dahlia Jul 14, 2026
fe30bd2
Document localhost.run removal in CHANGES.md
dahlia Jul 14, 2026
6dbb4bb
Merge pull request #940 from dahlia/cli/improve-tunnel
dahlia Jul 14, 2026
b6b61d1
Add Netlify Async Workloads integration
dahlia Jul 11, 2026
e780117
Quiet Deno validation output
dahlia Jul 11, 2026
39343bf
Harden Netlify queue recovery
dahlia Jul 11, 2026
d5e7152
Propagate batch atomicity through wrappers
dahlia Jul 11, 2026
f8cb295
Mark fan-out batches as non-atomic
dahlia Jul 11, 2026
b2b6cd8
Test effective batch capability
dahlia Jul 11, 2026
e22ff38
List Netlify ordering support
dahlia Jul 11, 2026
1f84265
Document optional Netlify database setup
dahlia Jul 11, 2026
2b2c838
Scope Netlify ordering state by event
dahlia Jul 11, 2026
a6aa636
Document Netlify batch atomicity
dahlia Jul 11, 2026
100f787
Support qualified Postgres CAS tables
dahlia Jul 11, 2026
e92b882
Avoid no-op ordering state writes
dahlia Jul 11, 2026
a1ac5af
Persist ordered task completion
dahlia Jul 11, 2026
690d9b2
Merge pull request #934 from dahlia/packages/netlify
dahlia Jul 14, 2026
5f10801
Support Astro 5 through 7
dahlia Jul 11, 2026
423b779
Use Node.js consistently in documentation
dahlia Jul 11, 2026
9d43237
Italicize the Astro middleware path
dahlia Jul 12, 2026
5196dfc
Restrict example workflow permissions
dahlia Jul 12, 2026
be8f0e5
Verify generated Astro projects on Deno
dahlia Jul 12, 2026
49abc5f
Harden Astro compatibility fixtures
dahlia Jul 12, 2026
96dc249
Handle broken initializer test links
dahlia Jul 12, 2026
f8c54b4
Derive Astro test versions from metadata
dahlia Jul 12, 2026
c08d50b
Type initializer workspace metadata
dahlia Jul 12, 2026
75ed21d
Use npm for Deno Astro installation
dahlia Jul 12, 2026
7f0062b
Explain npm use in Deno Astro projects
dahlia Jul 12, 2026
8dfbd6b
Drain Astro test server output
dahlia Jul 12, 2026
623838f
Use npm for Deno Astro adapters
dahlia Jul 12, 2026
8351096
Complete Astro middleware example
dahlia Jul 12, 2026
4b88fb2
Make Astro test shutdown bounded
dahlia Jul 12, 2026
1cc780c
Gate Astro 7 on supported Node.js
dahlia Jul 12, 2026
1753d76
Build Astro fixtures with each runtime
dahlia Jul 12, 2026
0ad2ebf
Pin Astro in Deno commands
dahlia Jul 12, 2026
12fd7dc
Preserve compatibility test failures
dahlia Jul 12, 2026
90797b0
Merge pull request #936 from dahlia/packages/astro
dahlia Jul 14, 2026
31ecb5c
Merge tag '2.0.22' into 2.1-maintenance
dahlia Jul 15, 2026
fb5adc3
Release 2.1.18
dahlia Jul 15, 2026
7af16c7
Version bump
dahlia Jul 15, 2026
e3425d6
Merge tag '2.1.18' into 2.2-maintenance
dahlia Jul 15, 2026
27a189f
Release 2.2.7
dahlia Jul 15, 2026
a0076b9
Version bump
dahlia Jul 15, 2026
f602160
Merge tag '2.2.7' into 2.3-maintenance
dahlia Jul 15, 2026
9d67b22
Release 2.3.2
dahlia Jul 15, 2026
c3c2430
Version bump
dahlia Jul 15, 2026
9e17cad
Merge remote-tracking branch 'fedify-dev/main'
dahlia Jul 15, 2026
4a65511
Merge tag '2.3.2'
dahlia Jul 15, 2026
79bd15c
Restore cmd field in MultiHandleExample interface
dktsudgg Jul 15, 2026
ddf7ae4
Enforce example registration in `test-examples`
dktsudgg Jul 15, 2026
2d186c2
Refactor `getRegisteredExampleNames` function in `test-examples`
dktsudgg Jul 17, 2026
5700198
Update supported web frameworks in README.md
Bananamilk452 Jul 18, 2026
533744b
Merge pull request #944 from Bananamilk452/issue-889-update-init-fram…
dahlia Jul 18, 2026
2d46cdb
Merge pull request #941 from dktsudgg/886-test-unregistered-example-d…
dahlia Jul 18, 2026
01f773f
Unify contribution guidance
dahlia Jul 18, 2026
467941e
Cache Twoslash documentation builds
dahlia Jul 18, 2026
f1c00f2
Merge pull request #947 from dahlia/docs/contributing.md
dahlia Jul 18, 2026
34c4586
Remove duplicate response from integration sequence diagram
dktsudgg Jul 18, 2026
ea8b9fd
Merge pull request #953 from dktsudgg/fix-integration-sequence-diagram
dahlia Jul 18, 2026
2265642
Merge pull request #949 from dahlia/docs/cache-twoslash
dahlia Jul 19, 2026
365feeb
Merge tag '2.0.23' into 2.1-maintenance
dahlia Jul 19, 2026
90a73f2
Release 2.1.19
dahlia Jul 19, 2026
5f3647e
Version bump
dahlia Jul 19, 2026
5873825
Merge tag '2.1.19' into 2.2-maintenance
dahlia Jul 19, 2026
8404208
Release 2.2.8
dahlia Jul 19, 2026
3ef5656
Version bump
dahlia Jul 19, 2026
e799add
Merge tag '2.2.8' into 2.3-maintenance
dahlia Jul 19, 2026
a455153
Release 2.3.3
dahlia Jul 19, 2026
acc01a1
Version bump
dahlia Jul 19, 2026
ff24cc4
Merge tag '2.3.3'
dahlia Jul 19, 2026
c2352c0
Upgrade Hongdown to 0.5.1
dahlia Jul 19, 2026
98c457c
Add details on `to` and `cc` properties in pragmatics section
Bananamilk452 Jul 18, 2026
1c59a86
Add replies section to pragmatics documentation with examples
Bananamilk452 Jul 18, 2026
b31bcec
Add Microformats section to pragmatics documentation
Bananamilk452 Jul 18, 2026
27460a2
Add support for consent-respecting quote posts in pragmatics document…
Bananamilk452 Jul 18, 2026
967ab2a
Clarify the roles of reply properties
Bananamilk452 Jul 24, 2026
67fc540
Document the quote object accessors
Bananamilk452 Jul 24, 2026
22b03d3
Limit the Microformats interoperability claim
Bananamilk452 Jul 24, 2026
e3917fd
Add instructions for running focused checks on integration packages
Bananamilk452 Jul 24, 2026
b4ee305
Merge pull request #967 from Bananamilk452/issue-890-document-focused…
dahlia Jul 24, 2026
5936534
Merge pull request #948 from Bananamilk452/issue-946-add-more-infos-i…
dahlia Jul 24, 2026
90fdf19
Fix check-each failure for @fedify/elysia
dktsudgg Jul 25, 2026
a945572
Verify portable object proofs
dahlia Jul 25, 2026
6afef27
Reject ambiguous proof verification methods
dahlia Jul 25, 2026
ab86306
Strip aliased proofs before hashing
dahlia Jul 25, 2026
1f21b47
Expand compact proof IRIs before hashing
dahlia Jul 25, 2026
e78a165
Reuse resolved contexts for proof aliases
dahlia Jul 26, 2026
e126686
Reject clear non-portable IDs early
dahlia Jul 26, 2026
541aef5
Add context data tests for @fedify/elysia
dktsudgg Jul 26, 2026
8405a46
Reject ambiguous proof field values
dahlia Jul 26, 2026
09cd70e
Merge pull request #969 from dktsudgg/852-elysia-context-data-test
dahlia Jul 26, 2026
d55cc8f
Narrow proof digest input type
dahlia Jul 26, 2026
54fa3c7
Clarify proof validation comment
dahlia Jul 26, 2026
3c0f662
Require the portable proof type
dahlia Jul 26, 2026
30a4978
Authenticate complete proof configurations
dahlia Jul 26, 2026
c6486cc
Run `format` before `format:check` in init hydration test validation
Palcimer Jul 18, 2026
a0aa033
Remove now-redundant Astro-specific `format` step
Palcimer Jul 19, 2026
a3ecc3c
Add @fedify/init changes in CHANGES.md
Palcimer Jul 19, 2026
4ca0eab
Warn instead of failing when format/lint scripts fail
Palcimer Jul 26, 2026
1eadcb0
Merge pull request #952 from Palcimer/issue-950-run-format-before-check
dahlia Jul 27, 2026
0c10e0d
Correlate duplicate proof configurations
dahlia Jul 27, 2026
9fe4f1d
Merge tag '2.0.24' into 2.1-maintenance
dahlia Jul 29, 2026
2a3e59b
Release 2.1.20
dahlia Jul 29, 2026
bd29b44
Merge tag '2.1.20' into 2.2-maintenance
dahlia Jul 29, 2026
76058a6
Release 2.2.9
dahlia Jul 29, 2026
fbb50a5
Merge tag '2.2.9' into 2.3-maintenance
dahlia Jul 29, 2026
9aa5ba9
Release 2.3.4
dahlia Jul 29, 2026
52f3ee4
Merge pull request #968 from dahlia/feat/fep-ef61/proof-policy
dahlia Jul 29, 2026
3dae30c
Merge tag '2.3.4'
dahlia Jul 29, 2026
550166d
Adopt Sacho for changelog management
dahlia Jul 29, 2026
e69dbae
Stabilize Astro compatibility tests
dahlia Jul 29, 2026
32e9952
Update sponsors
github-actions[bot] Jul 29, 2026
54cf043
List the h3 example
lntutor Jul 31, 2026
9b6f025
Merge pull request #975 from lntutor/docs/list-h3-example
dahlia Jul 31, 2026
e5b710a
Update sponsors
github-actions[bot] Aug 2, 2026
baffa32
Add SvelteKit webframework option to fedify init
Palcimer Jul 14, 2026
5031f57
List SvelteKit in init README and tutorial
Palcimer Jul 25, 2026
e346470
Add @fedify/init changes (SvelteKit support) in CHANGES.md
Palcimer Jul 25, 2026
6eeb562
Update comments about vars in `types.ts`
Palcimer Jul 27, 2026
5c8b4e3
Wrap SvelteKit dev tasks with dotenvx
Palcimer Jul 31, 2026
ff7cbf5
Update @fedify/init dependencies
Palcimer Jul 31, 2026
e4b2836
Restore SvelteKit changelog fragment after rebase
Palcimer Aug 2, 2026
b3c5541
Add @fedify/cli changes (SvelteKit support in `fedify init`) in CHANG…
Palcimer Aug 2, 2026
ec74240
Merge pull request #971 from Palcimer/issue-892-add-sveltekit-fedify-…
dahlia Aug 2, 2026
a681e1f
Update sponsors
github-actions[bot] Aug 2, 2026
3dbd090
Fix fedify/next test-each failure
Bananamilk452 Aug 1, 2026
45ec80f
Add Accept header detection test in fedify/next
Bananamilk452 Aug 1, 2026
e303b17
Add Content-Type header detection test in fedify/next
Bananamilk452 Aug 1, 2026
eae229c
Add NodeInfo route detection test in fedify/next
Bananamilk452 Aug 1, 2026
f3e2434
Add non-federation request delegation test in fedify/next
Bananamilk452 Aug 1, 2026
ccddfbf
Add custom not found/not acceptable handler
Bananamilk452 Aug 1, 2026
6f7a221
Edit deno.json, mise.toml, package.json to fix test in fedify/next
Bananamilk452 Aug 4, 2026
15ad151
Merge pull request #978 from Bananamilk452/fedify-next-tests
dahlia Aug 5, 2026
bc407cb
Add warning at delete contents for Linux users
lego37yoon Aug 9, 2026
d140309
Refactor the meaning of each functions
lego37yoon Aug 9, 2026
27fea34
Edited changelog with Sacho
lego37yoon Aug 9, 2026
836efa9
Edit word of changelog to improve grammar
lego37yoon Aug 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
129 changes: 129 additions & 0 deletions .agents/skills/add-to-fedify-init/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
name: add-to-fedify-init
description: >-
This skill is used to add an integration package to the @fedify/init
package so that users can select the new framework via the `fedify init`
command, and to test it with `mise test:init`.
argument-hint: "Provide the name of the web framework to register in @fedify/init."
---

<!-- deno-fmt-ignore-file -->

Adding an integration package to `@fedify/init`
===============================================

Follow these steps in order to register the integration package in
`@fedify/init` and verify it works.

1. Add to `@fedify/init`
2. Test with `mise test:init`
3. Lint, format, and final checks


Add to `@fedify/init`
---------------------

Add the new package to the `@fedify/init` package so users can select the
new framework via the `fedify init` command. Follow these steps.

Steps may require code modifications not explicitly listed. For example,
if the new package needs specific configuration, utility functions in
`packages/init/src/webframeworks/utils.ts` may need updating. Make
modifications consistent with the existing code style and context.

### Write the `WebFrameworkDescription` object

Create a `packages/init/src/webframeworks/framework.ts` file and write the
`WebFrameworkDescription` object, referring to
[init/framework.ts](./init/framework.ts). Check the specifications in the
comments in `packages/init/src/types.ts` for details.

### Add to the `WEB_FRAMEWORK` array

Add the new framework name to the end of the `WEB_FRAMEWORK` array in
`packages/init/src/const.ts`.

~~~~ typescript
export const WEB_FRAMEWORK = [
// ... other frameworks
"framework", // Fill with the framework name
];
~~~~

### Add to the `webFrameworks` object

Add the new `WebFrameworkDescription` object in alphabetical order to the
`webFrameworks` object in `packages/init/src/webframeworks/mod.ts`.

~~~~ typescript
// packages/init/src/webframeworks/mod.ts

// ... other imports
import framework from "./framework.ts"; // Fill with the framework name

const webFrameworks: Record<string, WebFrameworkDescription> = {
// ... other frameworks
framework, // Fill with the framework name
};
~~~~

### Add templates in `packages/init/src/templates/framework/`

If additional files need to be generated, add template files under the
`packages/init/src/templates/framework/` directory. Template files must
end with the `.tpl` extension appended to their base name. Then, in
`packages/init/src/webframeworks/framework.ts`, load the templates using
the `readTemplate` function defined in `packages/init/src/lib.ts` and add
them to the `WebFrameworkDescription.init().files` object.


Test with `mise test:init`
--------------------------

Run `mise test:init` to verify that the new package is generated and runs
correctly. If a test fails, the output and error file paths are printed;
read them to diagnose the issue.

Running `mise test:init` without arguments tests all option combinations
and can take a very long time. Use appropriate options to narrow the test
scope.

Immediately remove test paths after completing the tests and analyzing any
resulting errors.

At a minimum, test the following three combinations.

- `mise test:init -w framework -m in-process -k in-memory --no-dry-run`:
Tests the new framework with the in-memory KV store and in-process message
queue, which are the most basic options. This combination verify that the
newly created package can be used without issues by minimizing dependencies
on other environments.
- `mise test:init -w framework`: Tests all package manager, KV store,
and message queue combinations with the framework selected. If a
required database is not installed or running, this combinations are
useless. Therefore, if the test output indicates that the databases are
not running, don't use this combination ever again for the session.
Instead, use the previous one or the next one.
- `mise test:init -m in-process -k in-memory --no-dry-run`: Fixes the
KV store and message queue and tests all web framework and package
manager combinations. This test is mandatory if you modified logic
beyond just writing the `WebFrameworkDescription` object.

For details on options, run `mise test:init --help`.

Some frameworks or combinations may be untestable. Analyze the test
results; if there are impossible combinations, identify the reason and add
the combination and reason as a key-value pair to the
`BANNED_LOOKUP_REASONS` object in
`packages/init/src/test/lookup.ts`.


Lint, format, and final checks
------------------------------

Add keywords related to the framework in `.hongdown.toml` and `cspell.json` in
root path.

After implementation, run `mise run fmt && mise check`.
If there are lint or format errors, fix them and run the command again until
there are no errors.
58 changes: 58 additions & 0 deletions .agents/skills/add-to-fedify-init/init/framework.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// packages/init/src/webframeworks/프레임워크.ts
// The import paths are written based on the files in
// `packages/init/src/webframeworks/` where the actual files must exist,
// so do not modify them unless necessary.

import deps from "../json/deps.json" with { type: "json" };
import type { WebFrameworkDescription } from "../types.ts";
import { defaultDenoDependencies, defaultDevDependencies } from "./const.ts";
import { getInstruction } from "./utils.ts";

const frameworkDescription: WebFrameworkDescription = {
label: "프레임워크", // Fill 프레임워크 with the official framework name
packageManagers: [
// List the package managers that support this framework,
// the list should be a subset of `PACKAGE_MANAGER` from `../const.ts`.
// If the framework is compatible with all package managers,
// you can just use `packageManagers: PACKAGE_MANAGER`.
],
defaultPort: 0, // Fill in the default port of the framework
init: ({
// Destructure necessary parameters from the argument
packageManager: pm,
}) => ({
command: [
// Optional shell command to run before scaffolding e.g., `create-next-app`.
// Split the command into an array of command and arguments,
// e.g., `["npx", "create-next-app@latest"]`.
],
dependencies: pm === "deno"
? {
// Use `deps.json` for version numbers,
// e.g., `"@fedify/프레임워크": deps["@fedify/프레임워크"]`.
...defaultDenoDependencies,
}
: {
// Use `deps.json` for version numbers,
// e.g., `"@fedify/프레임워크": deps["@fedify/프레임워크"]`.
},
devDependencies: {
// Use `deps.json` for version numbers,
// e.g., `"@fedify/프레임워크": deps["@fedify/프레임워크"]`.
...defaultDevDependencies,
},
federationFile: "**/federation.ts",
loggingFile: "**/logging.ts",
tasks: {
// If `command` create a project with `tasks` in `deno.json` (or `script`s in
// `package.json`) to run application, this could be unnecessary.
// In the tasks of the finally generated application, at least include
// a `dev` task to run the development server. `dev` task is used by
// `mise test:init` to run tests against the generated project.
// For Node.js/Bun, `lint: "eslint ."` is needed.
},
instruction: getInstruction(pm, 0 /* Replace with default port */),
}),
};

export default frameworkDescription;
Loading