diff --git a/docs/development-tips.md b/docs/development-tips.md
index ea1b199..afa2f76 100644
--- a/docs/development-tips.md
+++ b/docs/development-tips.md
@@ -19,14 +19,23 @@
 ways to workaround and let the analyzer understand the project structures.
 
 When developing SGX enclaves and corresponding dependent crates, you need to
-prepare a `Cargo.toml` in the root directory to help the analyzer. This
-`Cargo.toml` file can be copied from our build system:
-`cmake/tomls/Cargo.sgx_trusted_lib.toml`. Similarly, when developing the app
-parts, you can copy the `cmake/tomls/Cargo.sgx_untrusted_lib.toml` file to the
-root directory as `Cargo.toml`. For standalone Rust applications such as CLI, no
-`Cargo.toml` is needed. After the preparation of `Cargo.toml` in root,
-RLS/rust-analyzer can understand the projects finally. You will see type hints
-and cross references using IDEs with extensions.
+prepare set of cargo files in the root directory to help the analyzer. This
+includes `Cargo.toml` which can be copied from our build system:
+`cmake/tomls/Cargo.sgx_trusted_lib.toml`; `Cargo.lock` which can be copied from
+`third_party/crates-sgx/Cargo.lock`; `.cargo/config` which can be copied from
+`third_party/crates-sgx/config`. Similarly, when developing the app parts, you
+can copy the `cmake/tomls/Cargo.sgx_untrusted_lib.toml` file to the root
+directory as `Cargo.toml`, and `.cargo/config` and `Cargo.lock` files can be
+found in `third_party/crates-io/` directory. For standalone Rust applications
+such as CLI, no `Cargo.toml` is needed. After the preparation of `Cargo.toml` in
+root, RLS/rust-analyzer can understand the projects finally. You will see type
+hints and cross references using IDEs with extensions.
+
+::: tip NOTE 
+You can also simply use the script `scripts/ide.sh <trusted|untrusted|clean>`
+to prepare a IDE-friendly developing environment for trusted
+part, untrusetd part, or remove the files generated by this script. 
+:::
 
 ## Logging
 
diff --git a/scripts/ide.sh b/scripts/ide.sh
new file mode 100755
index 0000000..7794322
--- /dev/null
+++ b/scripts/ide.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+TRUSTED_TOML="cmake/tomls/Cargo.sgx_trusted_lib.toml"
+UNTRUSTED_TOML="cmake/tomls/Cargo.sgx_untrusted_app.toml"
+TOML_DEST="Cargo.toml"
+
+TRUSTED_LOCK="third_party/crates-sgx/Cargo.lock"
+UNTRUSTED_LOCK="third_party/crates-io/Cargo.lock"
+LOCK_DEST="Cargo.lock"
+
+TRUSTED_CONFIG="third_party/crates-sgx/config"
+UNTRUSTED_CONFIG="third_party/crates-io/config"
+CONFIG_DEST=".cargo/config"
+
+script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
+teaclave_root=${script_dir}/..
+
+copy() {
+    # $1: TOML
+    # $2: LOCK
+    # $3: CONFIG
+    mkdir ${teaclave_root}/.cargo
+    cp $1 ${teaclave_root}/${TOML_DEST}
+    cp $2 ${teaclave_root}/${LOCK_DEST}
+    cp $3 ${teaclave_root}/${CONFIG_DEST}
+}
+
+clean() {
+    # clean the IDE helper files for Rust
+    rm ${teaclave_root}/${TOML_DEST}
+    rm ${teaclave_root}/${LOCK_DEST}
+    rm ${teaclave_root}/${CONFIG_DEST}
+    rm -r ${teaclave_root}/.cargo
+}
+
+main() {
+
+    if [ $1 = "trusted" ]; then
+        clean 2>/dev/null
+        copy $TRUSTED_TOML $TRUSTED_LOCK $TRUSTED_CONFIG
+    elif [ $1 = "untrusted" ]; then
+        clean 2>/dev/null
+        copy $UNTRUSTED_TOML $UNTRUSTED_LOCK $UNTRUSTED_CONFIG
+    elif [ $1 = "clean" ]; then
+        clean
+    else
+        echo "Usage: ./ide.sh <trusted|untrusted|clean>"
+        return 1
+    fi
+
+    return 0
+}
+
+main $*
