# refactor: extract shared normalizeProjectScripts into @t3tools/contracts · flambo/t3code

[View on GitCafe](https://git.cafe/flambo/t3code/commit/278066697484657d7075738a365daac0ec80f428)

Repository: [flambo/t3code](https://git.cafe/flambo/t3code)

Visibility: public

Requested revision: 278066697484657d7075738a365daac0ec80f428

Requested commit: 278066697484657d7075738a365daac0ec80f428

Commit: 278066697484657d7075738a365daac0ec80f428

Tree: e7b2477befef5fa53c24e9cd7d01498c414420ae

Author: Cursor Agent

Committer: Cursor Agent

## Message

```
refactor: extract shared normalizeProjectScripts into @t3tools/contracts

Move the duplicated script normalization logic (dedup-by-id + single
runOnWorktreeCreate enforcement) from apps/web/src/store.ts and
apps/server/src/projectRegistry.ts into packages/contracts/src/project.ts
so both consumers share one canonical implementation.

Applied via @cursor push command
```

## Parents

- [58a784074bff82c360e398b15708a679d32c9ba3](https://git.cafe/flambo/t3code/commit/58a784074bff82c360e398b15708a679d32c9ba3?format=markdown)

[Source at this commit](https://git.cafe/flambo/t3code/tree/278066697484657d7075738a365daac0ec80f428?format=markdown)
